def foo(i, x=[]):
x.append(x.append(i))
return x
for i in range(3):
y = foo(i)
print(y)
print(y)
这会导致
[0, None]
[0, None, 1, None]
[0, None, 1, None, 2, None]
[0, None, 1, None, 2, None]
为什么None
会被添加到列表中?我检查了一些关于这个主题的线程,不幸的是我仍然不明白为什么要打印None
。你知道吗
如果我用x.append(i)
替换x.append(x.append(i))
,None
就会消失。这是有道理的,但我仍然不清楚为什么x.append(x.append(i))
添加了None
。你知道吗
Alecxe是正确的。总之,append(value)没有返回值,因此将不返回任何值。如果您希望在半Python庄园中附加返回值,请使用:
y = x = x + [value]
这将设置y等于x,并在两者中附加值。你知道吗但是,除此之外,部分问题是您使用的默认参数是可变的。 这意味着每次使用默认值x调用函数时,列表x都将与上次调用完成时相同。 考虑以下几点
调用
add(4)
将打印[4]
,然后调用add(5)
after将打印[4, 5]
我希望这有帮助。你知道吗
这是因为^{} 方法附加到列表并返回
None
:换句话说,内部的
x.append(i)
将附加i
,外部的将附加None
。你知道吗相关问题 更多 >
编程相关推荐