Python中如何实现向函数增量传递参数?
问题解决:正确传递可变数量的位置参数
问题原因
你当前的代码中,func(par)是把整个列表par当作第一个参数a传入函数,所以函数的b和c始终使用默认值,导致输出不符合预期。
正确实现
使用Python的参数解包操作符*,它可以把列表(或其他可迭代对象)中的元素逐个拆解为函数的位置参数。修改后的代码如下:
def func(a, b="string0", c=False): print(f"a={str(a)}, b={str(b)}, c={str(c)}") a=1 b="string" c=True params = [[a], [a, b], [a, b, c]] for par in params: func(*par) # 用*解包列表元素作为位置参数
输出结果
执行后会得到符合预期的输出:
a=1, b=string0, c=False a=1, b=string, c=False a=1, b=string, c=True
原理说明
*par会将列表par中的每一个元素依次对应到函数的位置参数上:
- 当
par = [a]时,*par等价于传入a,即调用func(a) - 当
par = [a, b]时,*par等价于传入a, b,即调用func(a, b) - 当
par = [a, b, c]时,*par等价于传入a, b, c,即调用func(a, b, c)
内容的提问来源于stack exchange,提问作者Gen Eva
相关产品推荐
相关产品推荐

