Python中可变参数列表的默认值
在Python 3中,可以为可变参数列表设置默认值吗?
类似于:
def do_it(*args=(2, 5, 21)):
pass
我在想,可变参数列表的类型是tuple
,但这里不接受元组。
2 个回答
1
像这样初始化一个列表通常不是个好主意。
默认值只会被计算一次。这在默认值是可变对象时,比如列表、字典或者大多数类的实例,就会产生不同的效果。例如,下面这个函数会在后续调用时累积传入的参数。
def f(a, L=[]):
L.append(a)
return L
print f(1)
print f(2)
rint f(3)
这将会打印出
[1]
[1, 2]
[1, 2, 3]
我通常会检查是否有传入参数,如果没有的话,就在函数内部进行初始化。
7
如果不是语法上的问题,那就要看你想要什么样的效果:
def do_it(*args):
if not args: args = (2, 5, 21)
或者
def do_it(a=2, b=5, c=21, *args):
args = (a,b,c)+args
应该可以实现这个效果。