Python参数范围

时间:2010-12-25 00:31:56

标签: interpreter python

  

可能重复:
  “Least Astonishment” in Python: The Mutable Default Argument

我已经通过艰难的方式了解到,当初始化为默认函数参数时,本机对象(如列表和字典)表现得很奇怪。

实施例

>>> def test(key,val,d={}):
    d[key]=val
    return d

>>> test(1,2)
{1: 2}
>>> test(2,3)
{1: 2, 2: 3}

通常,我希望test(2,3)的结果为{2: 3}。不幸的是,变量d似乎只被初始化一次并在使用不同的参数调用函数时重用。

我已经学会了使用它,我甚至停止使用默认本机对象作为默认参数。但是,我想知道为什么会有这样的行为。我不认为Python开发人员只是把它弄得乱七八糟,应该有更好的解释。

0 个答案:

没有答案