功能签名中的分配

时间:2014-02-18 17:10:28

标签: python arguments

在函数调用中,以下代码打印10,但不知道原因可以请任何正文 解释

def test(x=[]):    
    x.append(10)
    print x

3 个答案:

答案 0 :(得分:2)

这称为default argument

>>> def test(x=[]):
...     x.append(10)
...     print x
... 
>>> test()
[10]
>>> test([20])
[20, 10]

如果在函数调用期间未传递参数,则指定要采用的值。因此,如果给出一个值作为参数,则使用该值。否则,使用默认值。

答案 1 :(得分:2)

它不会返回10 ...它只是打印出来......

如果你第二次打电话,它会打印一份2 10的

列表

第三次获得一个包含3 10s的列表

这是因为列表是一个可变类型,并且您正在修改每个调用的默认参数...它不会以每次调用的新列表开头

我不确定这是否能回答你的问题......

答案 2 :(得分:0)

def test(x=[]):

在这里,您要定义一个函数test,它接受​​一个名为x的参数。 x被定义为采用[]的默认参数,即空列表。

  x.append(10)

在这里,您将10附加到空列表中,该列表变为[ 10 ],这是一个包含数字10的列表。

  print x

在此打印列表。这就是为什么当你致电test()时,你得到了

>>> test()
[10]

默认参数仅评估一次;每次调用test()都会传递相同的值,而您没有明确指定参数。

因此,如果您再次致电test(),则会获得:

>>> test()
[10, 10]

如您所见,原始列表中附加了另外10个。