-1

查看以下代码:

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]

为什么在后一种情况下它采用默认参数值但在前一种情况下不采用?

4

1 回答 1

0

默认参数是定义函数时的 init。因此对于可变类型值,函数调用共享相同的变量。您可以参考为什么对象之间共享默认值

于 2013-07-27T14:33:14.413 回答