查看以下代码:
def f(x, myList = []):
myList.append(x)
return myList
F(6)
返回[6]
而
F(7)
返回[6,7]
我的问题是,在没有指定值的情况下,它没有使用默认的myList值。
另一方面,这段代码工作正常
def f(x, myList = None):
if myList == None:
# This WILL allocate a new list on every call to the function.
myList = []
myList.append(x)
return myList
F(6)
返回[6]
F(7)
返回[7]
为什么在后一种情况下它采用默认参数值而不是前一种情况?
答案 0 :(得分:0)
默认参数是定义函数时的init。因此,对于可变类型值,函数调用共享相同的变量。您可以参考Why are default values shared between objects。