Python中的函数, 参数包括位置参数和关键字参数两种.
注意:
1.函数定义时, 可接受参数列表之外的位置或关键字参数. *args
需写在**kwargs
之前.
2. 函数调用时, 关键字参数必须跟在位置参数后面. 若有在列表/元组里面的位置参数, 需使用*
操作符进行解包; 若有在字典里的关键字参数, 需使用**
操作符进行解包.
示例代码如下:
def f(p1, *args, k1=2, **kwargs):
"""
:param p1: 位置参数
:param k1: 关键字参数
:param args:参数列表外的其他位置参数
:param kwargs: 参数列表外的其余关键字参数
"""
print(p1, k1)
print(type(args), args, args[1])
print(type(kwargs), kwargs, kwargs['kw2'])
if __name__ == '__main__':
# 写法1
f(1, 2, 3, k1=4, kw1='a', kw2='b', kw3='c')
# 写法2(解包)
myargs = (2, 3)
mykwargs = {'kw1': 'a', 'kw2': 'b', 'kw3': 'c'}
f(1, *myargs, k1=4, **mykwargs)
输出:
1 4
<class 'tuple'> (2, 3) 3
<class 'dict'> {'kw1': 'a', 'kw2': 'b', 'kw3': 'c'} b