在这两种情况下使用append()有什么不同?

时间:2017-01-07 20:07:52

标签: python list python-3.x append

lis = [1,2,3]

print(lis.append(4))
# Returns None

#############

lis = [1,2,3]

lis.append(4)

print(lis)
# Returns [1,2,3,4]

我发现此代码here,但我不理解为什么.append()返回None的原因。回答的人说这是因为

  

.append()更改了列表并返回None

但这对我没有意义。我解释上面的示例代码块的方式很简单,你必须首先附加到列表才能进行rpint,但是这会违反我在评估语句中的语句时对评估顺序的理解。

2 个答案:

答案 0 :(得分:1)

类型list的数据类型是可变的,意味着您可以直接更改对象而无需替换它。

此质量允许使用appendextend等方法进行打印。

当在对象上调用类似的方法时,它们实际上会更改引用的对象,但不返回任何内容(None),因为我们需要它们的功能是更改对象,而不是返回输出。

当您评估print(lis.append(4))时,解释程序会调用更改lis.append(4)的{​​{1}}并返回lis。现在,它开始打印评估的表达式 - None,这就是你得到的。

答案 1 :(得分:-1)

使用append方法时,它会对lis起作用并追加到它。它通过引用而不是通过副本作用于lis