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,但是这会违反我在评估语句中的语句时对评估顺序的理解。
答案 0 :(得分:1)
类型list
的数据类型是可变的,意味着您可以直接更改对象而无需替换它。
此质量允许使用append
,extend
等方法进行打印。
当在对象上调用类似的方法时,它们实际上会更改引用的对象,但不返回任何内容(None
),因为我们需要它们的功能是更改对象,而不是返回输出。
当您评估print(lis.append(4))
时,解释程序会调用更改lis.append(4)
的{{1}}并返回lis
。现在,它开始打印评估的表达式 - None
,这就是你得到的。
答案 1 :(得分:-1)
使用append
方法时,它会对lis
起作用并追加到它。它通过引用而不是通过副本作用于lis
。