【问题标题】:Default Argument Values [duplicate]默认参数值 [重复]
【发布时间】:2013-07-27 14:30:30
【问题描述】:

查看以下代码:

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]

为什么在后一种情况下它采用默认参数值,而在前一种情况下却没有?

【问题讨论】:

    标签: python arguments default


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 2013-02-14
      • 1970-01-01
      • 2017-04-14
      • 2011-09-23
      相关资源
      最近更新 更多