iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python函数参数和注解的使用
  • 767
分享到

Python函数参数和注解的使用

python函数参数python注解 2022-06-02 22:06:39 767人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录四种参数仅限关键字参数内省中的函数参数函数注解四种参数 python函数func定义如下: def func(first, *args, second="Hello World", **kwargs):

目录
  • 四种参数
  • 仅限关键字参数
  • 内省中的函数参数
  • 函数注解

四种参数

python函数func定义如下:


def func(first, *args, second="Hello World", **kwargs):
    print(first)
    print(args)
    print(second)
    print(kwargs)


func("dongfanger", "san", py="Good")

运行后会输出:


dongfanger
('san',)
Hello World
{'py': 'good'}

它有四种参数:

  • first是定位参数,positional parameter,不可省略。
  • *args是可变参数,arguments,存入元组。
  • second是默认值参数,default argument values,可以省略。
  • **args是关键字参数,keyWord arguments,存入字典。

func函数的调用方式有以下这些:

①传入单个定位参数。


func("dongfanger")  

dongfanger
()
Hello World
{}

②第一个参数后的任意个参数会被*args捕获,存入一个元组。


func("dongfanger", "a", "b", "c")

dongfanger
('a', 'b', 'c')
Hello World
{}

③没有明确指定名称的关键字参数会被**kwargs捕获,存入一个字典。


func("dongfanger", j="1", k="2")

dongfanger
()
Hello World
{'j': '1', 'k': '2'}

④second只能作为关键字参数传入。


func("dongfanger", second="cool")

dongfanger
()
cool
{}

⑤定位函数也能作为关键字参数传入。


func(first="san")

san
()
Hello World
{}

⑥字典前加上**,其所有元素作为单个参数传入,同名键会绑定到对应具名参数上,余下的被**args捕获。


my_dict = {"first": "dongfanger", "location": "cd", "second": "cool", "age": "secret"}
func(**my_dict)

dongfanger
()
cool
{'location': 'cd', 'age': 'secret'}

除了这四种参数,还有一种python3新增加的仅限关键字参数。

仅限关键字参数

仅限关键字参数(keyword-only argument)是Python3的新特性,func函数的second参数就是仅限关键字参数,“仅限”的意思是说,只能通过关键字参数指定,它一定不会捕获未命名的定位参数。

假如把参数位置调整一下定义another_func函数:


def another_func(first, another_second="Hello World", *args,  **kwargs):
    print(first)
    print(another_second)
    print(args)
    print(kwargs)


another_func("dongfanger", "a", "b", "c")

输出会变成:


dongfanger
a  # 注意这里
('b', 'c')
{}

another_second不是仅限关键字参数,而只是默认值参数,因为它捕获到了定位参数。

由此得知,定义仅限关键字参数,必须把它放到*args参数后面,就像func函数一样,反例是another_func函数。

还有第二个方法定义仅限关键字参数,在签名中放一个*:


>>> def f(a, *, b):  # b是仅限关键字参数
...    return a, b
...
>>> f(1, b=2)  # 只能传关键字参数
(1, 2)
>>> f(1, 2)  # 不能传定位参数
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: f() takes 1 positional argument but 2 were given
>>> f(1, 2, 3)  # 不能传定位参数
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: f() takes 1 positional argument but 3 were given

仅限关键字参数不一定要有默认值,就像b一样,强制必须传入实参。

内省中的函数参数

函数内省的意思是说,当你拿到一个“函数对象”的时候,你可以继续知道,它的名字,参数定义等信息。这些信息可以通过函数对象的属性(一些双下划线的魔法方法)得到。

对于func函数:


def func(first, *args, second="Hello World", **kwargs):
    print(first)
    print(second)
    print(args)
    print(kwargs)

和another_func函数:


def another_func(first, another_second="Hello World", *args,  **kwargs):
    print(first)
    print(another_second)
    print(args)
    print(kwargs)

【__defaults__属性】

元组,保存着定位参数和关键字参数的默认值。


print(func.__defaults__)  # None

print(another_func.__defaults__)  # ('Hello World',)

【__kwdefaults__属性】

字典,保存仅限关键字参数。


print(func.__kwdefaults__)  # {'second': 'Hello World'}

print(another_func.__kwdefaults__)  # None

【__code__属性】

code对象引用,code对象自身有很多属性,其中包括参数名称。


print(func.__code__.co_varnames)  # ('first', 'second', 'args', 'kwargs')

print(another_func.__code__.co_varnames)  # ('first', 'another_second', 'args', 'kwargs')

另外还可以使用inspect库的signature方法来查看内省中的函数参数:


from inspect import signature

print(signature(func))  
# (first, *args, second='Hello World', **kwargs)

框架和IDE等工具可以使用这些信息验证代码。

函数注解

如果刷过力扣算法题,那么对函数注解就不会陌生。比如:


def clip(text:str, max_len:'int > 0'=80) -> str:
    pass

参数:后面是注解表达式,可以用来注解参数类型和约束。如果参数有默认值,注解放在参数名和=号之间。

可以在函数末尾的)和:之间添加->和注解表达式,来对返回值添加注解。

注解表达式可以是任何类型,最常用的类型是类(如str或int)和字符串(如'int > 0')。

函数注解只是个注解,Python对注解所做的唯一的事情是,把它们存入函数的__annotations__属性中:


print(clip.__annotations__)
#{'text': <class 'str'>, 'max_len': 'int > 0', 'return': <class 'str'>}

Python不做检查,不做强制,不做验证,什么操作都不做!注解只是元数据,可以供框架和IDE等工具使用。

以上就是Python函数参数和注解的使用的详细内容,更多关于Python函数参数和注解的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python函数参数和注解的使用

本文链接: https://www.lsjlt.com/news/10835.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP 函数参数的类型注解如何使用?
    php函数参数类型注解可用于指定函数参数的预期数据类型。好处包括:1.提高代码可读性;2.增强可维护性;3.提升安全性。 PHP 函数参数类型注解 类型注解是一种在 PHP 函数参数中...
    99+
    2024-04-10
    php 类型注解 代码可读性
  • Python--参数注解
    一,函数定义的弊端:    1)Python是动态语言,变量随时可以被赋值,且能赋值为不同的类型。    2)Python不是静态编译型语言,变量类型是运行器决定的    3)动态语言很灵活,但这也是其弊端:def add(x + y):...
    99+
    2023-01-31
    注解 参数 Python
  • python的函数参数怎么使用
    本篇内容主要讲解“python的函数参数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python的函数参数怎么使用”吧!位置参数这是一个求等差数列和的函数,使用必需要传入一个参数n,这...
    99+
    2023-06-22
  • python中函数的参数如何定义和使用
    这篇文章主要介绍“python中函数的参数如何定义和使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python中函数的参数如何定义和使用”文章能帮助大家解决问题。一、参数的定义1、函数的参数在哪...
    99+
    2023-07-02
  • Golang函数的可变函数参数使用注意事项
    Golang是一种强类型、静态编程语言,其函数设计灵活,其中可变函数参数也是常见的实现方式之一,通常会用于函数参数个数不确定或者需要动态参数传递的场景。可变函数参数的使用虽然方便有效,但是也存在一些需要注意的问题,本文将详细介绍一下可变函数...
    99+
    2023-05-17
    Golang 注意事项 可变函数参数
  • python中print()函数的end参数和sep参数怎么用
    小编给大家分享一下python中print()函数的end参数和sep参数怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!python 2.6中,print输出内容需要使用引号。python 3.0中的print 函数...
    99+
    2023-06-15
  • python sorted()函数的参数怎么使用
    这篇文章主要介绍“python sorted()函数的参数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python sorted()函数的参数怎么使用”文章能帮助大家解决问题。概念对可迭代...
    99+
    2023-06-30
  • python中函数的参数详解
    目录一、参数的定义1、函数的参数在哪里定义2、带参数的函数调用:二、参数分类1、根据实参进行分类1.1、位置参数(未命名参数)1.2、关键字参数(命名参数)2、根据形参进行分类2.1...
    99+
    2024-04-02
  • Python 函数教程:如何使用 lambda 函数和关键字参数?
    Python 是一种高级编程语言,可以通过函数来组织代码并实现代码的重用。Python 中的函数是一组语句,用于执行某项特定任务,并且可以在程序的任何地方调用。Python 中的函数非常灵活,可以使用不同的参数类型和返回值类型,以及不同的...
    99+
    2023-06-29
    函数 教程 关键字
  • Python 函数教程:如何使用默认参数和关键字参数?
    函数是 Python 中最基本的编程元素之一,可以将一段逻辑代码封装成一个可重复利用的单元。在 Python 中,函数定义的格式如下: def function_name(parameters): """docstring""" ...
    99+
    2023-06-29
    函数 教程 关键字
  • python函数的参数
    书写一个函数def  power(x):    return x * x对于power(x)函数,参数x就是一个位置参数,当我们调用power(x)函数时,必须传入有且仅有一个参数xpower(5)power()也是内置函数,用法power...
    99+
    2023-01-31
    函数 参数 python
  • Python的函数参数
    前言 python中 函数的参数可以分为两大类形参和实参~ def func(x, y): # x, y 就是形参 print(x, y) func(2, 3) # 2, 3 就是实参 - 形参 形参(...
    99+
    2023-01-31
    函数 参数 Python
  • Python 函数的参数
    1.1   函数的参数1.1.1   位置参数>>> def power(x, n):...    s = 1...    while n > 0:...        n = n - 1...        s =...
    99+
    2023-01-31
    函数 参数 Python
  • 深入了解python的函数参数
    目录位置参数默认参数关键字参数多值参数:总结 位置参数 这是一个求等差数列和的函数,使用必需要传入一个参数n,这就是位置参数 def sum(n): sum=0 ...
    99+
    2024-04-02
  • python如何使用函数作为函数形参
    这篇文章将为大家详细讲解有关python如何使用函数作为函数形参,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用函数作为函数形参有时候需要定义一个函数,该函数的大部分计算逻辑都能确定,但某些处理逻辑暂时...
    99+
    2023-06-17
  • python函数参数
    #没有参数a = 123 def xy(): print(a) xy() #执行结果123#一个参数 def xy(a): print(a) xy('nihao') #执行结果nihao#多个参数 def xy(a1,a...
    99+
    2023-01-30
    函数 参数 python
  • C++ 函数参数详解:参数类型推导与模板函数的使用
    c++++ 参数类型推导和模板函数:参数类型推导: auto 关键字可自动推断参数类型,简化声明并增强可读性。模板函数: 可接受不同类型数据,根据类型执行不同操作,语法:template...
    99+
    2024-04-27
    c++ 函数参数
  • python的函数参数你了解吗
    目录前言位置传参关键字传参默认参数不定长参数混合使用问题创建时引用时总结前言 python参数类型和参数传递形式多样,相对于其他语言python使用会更加灵活。它传参形式一般分为两种...
    99+
    2024-04-02
  • Python函数的参数列表解析
    目录一、函数参数的分类二、形参是对实参的值拷贝三、实参的分类四、形参的分类1、带及不带默认值的位置形参2、带有及不带默认值的关键字形参3、可变长度的形参五、打散机制总结一、函数参数的...
    99+
    2022-12-19
    Python函数 函数的参数列表 Python列表
  • 关于Python函数的定义和参数
    目录什么是函数? Python中的函数定义函数的参数(带参数的函数)(1)定义(2)必须参数(又叫位置参数)(3)默认参数(4)关键字参数(5)可变长参数5.1单星号可变5...
    99+
    2023-05-17
    Python函数定义 Python函数参数
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作