python 函数参数:必选参数、默认参数、可变参数、关键字参数 和 命名关键字参数
在 Python 中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数 5种参数形式。
这 5 种参数都可以组合起来使用,但是注意,参数定义的顺序必须是:必选参数、默认参数、可变参数/命名关键字参数和关键字参数。
def f1(a,b,c=0,*args,**kw):
print(a,b,c,args,kw)
#调用情况:
f1(1,2)
f1(1,2,c=4)
f1(1,3,6,'aw','wad',x=123,y='1232')
其中:
a,b 为必选参数
c=0 为默认参数
*args 为可变参数,可变参数允许你传入 0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple
**kw 为关键字参数,关键字参数允许你传入 0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
def person(name,age,*,city='hongkong',job='coder'):
print(name,age,city,job)
person('scofff',212,city='homy',job='eatter')
* 后面的两个参数为命名关键字参数
对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数,至于到底传入了哪些,就需要在函数内部通过 kw 检查。与关键字参数 **kw 不同,命名关键字参数需要一个特殊分隔符 * , * 后面 的参数被视为命名关键字参数,如果没有*号,那么后面的参数将被视为普通的未位置参数。
命名关键字参数必须传入参数名,而命名关键字参数可以有缺省值,这和位置参数不同。