Python入门之Python函数
2020-06-28 14:44:40 来源:易采站长站 作者:易采站长站整理
my_Info('Jock', gender='男', age=25) # 1 个位置参数,两个关键字参数
# 错误调用二:位置参数多次赋值
"""这里 25 作为位置参数赋值给 gender,后面又采用关键词参数的形式 gender='男'
对 gender 赋值,多次赋值,所以报错"""
my_Info('Jock', 25, gender='男') # TypeError: my_Info() got multiple values for argument 'gender'
# 正确调用
my_Info('Jock', '男', age=25) # 2 个位置参数,2 个关键字参数
# 错误调用三:调用未出现的关键字
my_Info('Jock', '男', my_age=25) # TypeError: my_Info() got an unexpected keyword argument 'my_age'
# 正确调用
my_Info(name='Jock', gender='男', age=25) # 3 个关键字参数
特殊参数
通常,参数可以按位置或通过关键字显式传递给 Python 函数。我们开发时限制传递参数的方式是有意义的,它可以提高代码的可读性和性能,使得开发人员只需查看函数定义即可确定是函数按位置、按位置或关键字、还是按关键字传递参数。
函数定义可能类似于:
def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
----------- ---------- ----------
| | |
| Positional or keyword |
| - Keyword only
-- Positional only
这里:
/ 和
* 是可选的。
/ 前面的参数都是
仅位置参数(positional-only parameter),即参数只能通过位置参数的形式传入函数,不能通过关键字的形式传入函数。
/ 和
* 之间的是
位置或关键字参数(positional-or-keyword parameter),即参数可以通过位置参数的形式参入函数,也可以通过关键字的形式传入函数。
* 后面的参数是
仅关键字参数(keyword-only parameter),即只能通过关键字传入参数。注意:在 Python 3.7 及之前的 Python 版本都是不能在函数定义中的使用
/ 符号,否则会报错,而
* 是可以使用的。从 Python 3.8 开始
/ 才可以在函数定义时使用了。下面给出官方文档中的用法举例:
>>> def standard_arg(arg):
... print(arg)
...
>>> def pos_only_arg(arg, /):
... print(arg)
...













闽公网安备 35020302000061号