python 中,在形参前面加上 *
与 **
,称为动态参数
加 *
时,函数可接受任意多个参数,全部放入一个元组中,代码如下:
def F(*args):
print(args)
F(123,"456")
# (123, '456')
加 **
时,函数接受参数时,返回为字典,需要写为如下形式:
def F(**kwargs):
print(kwargs)
F(k1=123,k2="456")
# {'k1': 123, 'k2': '456'}
混合形式写法,同时有*args,**kwargs
,则分别保存:
def F(p,*args,**kwargs):
print(p)
print(args)
print(kwargs)
F(11,"abc",[789],k1=123,k2="456")
# 11
# ('abc', [789])
# {'k1': 123, 'k2': '456'}
利用单个星号*
分散(scatter)序列,如下:
def F(*args):
print(args)
li = [11,22,33,44]
F(li)
F(*li) #分散序列
# ([11, 22, 33, 44],) 此元组只有一个元素li列表
# (11, 22, 33, 44) 此元组有4个元素
双星号**
的分散
def F(**kwargs):
print(kwargs)
li = {"k1":1,"k2":2}
F(k=li)
F(**li)
# {'k': {'k2': 2, 'k1': 1}}
# {'k2': 2, 'k1': 1}