<
>

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)
...
暂时禁止评论

微信扫一扫

易采站长站微信账号