列表中没有附加值outpu

2024-03-28 23:04:18 发布

您现在位置:Python中文网/ 问答频道 /正文

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。你知道吗


Tags: innone主题列表forreturnfoodef
2条回答

Alecxe是正确的。总之,append(value)没有返回值,因此将不返回任何值。如果您希望在半Python庄园中附加返回值,请使用:y = x = x + [value]这将设置y等于x,并在两者中附加值。你知道吗

但是,除此之外,部分问题是您使用的默认参数是可变的。 这意味着每次使用默认值x调用函数时,列表x都将与上次调用完成时相同。 考虑以下几点

def add(num, x=[]):
    x.append(num)
    print x

调用add(4)将打印[4],然后调用add(5)after将打印[4, 5]

我希望这有帮助。你知道吗

这是因为^{}方法附加到列表并返回None

>>> x = []
>>> print(x.append(1))
None

换句话说,内部的x.append(i)将附加i,外部的将附加None。你知道吗

相关问题 更多 >