python收集参数
有时候,允许用户提供任意数量的参数很有用
def print_params(*params):
print(params)
print_params('test')
print_params(1,2,3,5)
前面有*星号的参数将被放在元组中。
def print_params2(title,*params):
print(title)
print(params)
print_params2('test',1,2,3)
print_params2(1,2,3,5)
*星号意味着收集余下的位置参数,如果没有提供可收集的参数,将是一个空元组。
与赋值时一样,带星号的参数也可以放在其他位置,但不同的是,在这种情况下,需要使用名称来指定后续参数,不然的话会报错
def in_the_middle(x,*y,z):
print(x,y,z)
in_the_middle(1,2,3,4,5,z=8)
29.星号不会收集关键字参数,要收集关键字参数,可以使用两个星号。
def print_params_3(**params):
print(params)
print_params_3(x=1,y=2,z=3)
这样得到的是一个字典而不是元组
参数收集组合使用
def print_params_4(x,y,z=3,*pospar,**keypar):
print(x,y,z)
print(pospar)
print(keypar)
print_params_4(1,2,3,4,5,6,7,foo=1,bar=2)