在函数调用中,以下代码打印10,但不知道原因可以请任何正文 解释
def test(x=[]):
x.append(10)
print x
答案 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个。