def print_params(*params):
print params
print_params('Testing')
print_params(1,2,3)
输出结果
('Testing',)
(1, 2, 3)
参数前的星号将所有值放置在同一个元组中,并且能与普通参数联合使用
def print_params_2(title,*params):
print title
print params
print_params_2('Params:',1,3)
print_params_2('Nothing:')
输出结果:
Params:
(1, 3)
Nothing:
()
星号的意思是“收集其余的位置参数”。如果不提供任何供收集的元素,params就是个空元组。
注意:不能处理关键字参数(也是参数)。
print_params_2('Hmm...',something = 42)
输出结果:
Traceback (most recent call last):
File "", line 1, in
TypeError: print_params_2() got an unexpected keyword argument 'something'
需要令爱一个能处理关键字参数的“收集”操作
def print_params_3(**params):
print params
print_params_3(x=1,y=2,z=3)
输出结果:
{'y': 2, 'x': 1, 'z': 3}
返回结果是字典,而不是元组
def print_params_4(x,y,z,*pospar,**keypar):
print x,z
print pospar
print keypar
print_params_4(1,3,5,6,7,foo=1,bar=2)
print_params_4(1,2) 会报错
输出结果:
1 2 3
(5, 6, 7)
{'foo': 1, 'bar': 2}