默认参数值

时间:2013-07-27 14:30:31

标签: python arguments default

查看以下代码:

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]

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

1 个答案:

答案 0 :(得分:0)

默认参数是定义函数时的init。因此,对于可变类型值,函数调用共享相同的变量。您可以参考Why are default values shared between objects