参数组合
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,
参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
可变参数*args(默认名称),传入的是一个tuple,且这个tuple是原数据的副本,无论怎么操作也不会对原数据有影响。
关键字参数**kw(默认名称),传入的是一个dict,且进入函数的是副本。
命名关键字参数,如我只接收city和job作为我的关键字参数:
图1 关键字参数函数定义-1和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。
调用方式如下:
图2 关键字参数函数调用-1如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:
图3 关键字参数函数定义-2命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错:
命名关键字参数可以有缺省值,从而简化调用:
def person(name, age, *, city='Beijing', job):
print(name, age, city, job)
由于命名关键字参数city具有默认值,调用时,可不传入city参数:
>>>person('Jack',24, job='Engineer')
>>>Jack 24 Beijing Engineer
对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的.
网友评论