Python 在这两种情况下使用append()有什么区别?
我找到了这段代码,但我不明白为什么Python 在这两种情况下使用append()有什么区别?,python,list,python-3.x,append,Python,List,Python 3.x,Append,我找到了这段代码,但我不明白为什么.append()返回None。回答的人说是因为 .append()更改列表并返回None 但这对我来说毫无意义。我解释上述示例代码块的方式很简单,您必须先将其附加到列表中,然后才能对其进行rpint,但这违背了我在对语句中的语句求值时对求值顺序的理解。当使用它作用于lis并附加到其上的append方法时。它通过引用而不是复制作用于lis 类型为list的数据类型是可变的,这意味着您可以直接更改对象而无需替换它 这种质量允许使用append、extend等方法进
.append()
返回None
。回答的人说是因为
.append()
更改列表并返回None
但这对我来说毫无意义。我解释上述示例代码块的方式很简单,您必须先将其附加到列表中,然后才能对其进行rpint,但这违背了我在对语句中的语句求值时对求值顺序的理解。当使用它作用于
lis
并附加到其上的append
方法时。它通过引用而不是复制作用于lis
类型为list
的数据类型是可变的,这意味着您可以直接更改对象而无需替换它
这种质量允许使用append
、extend
等方法进行打印
当对对象调用类似的方法时,它们实际上会更改引用的对象,但不会返回任何内容(None
),因为我们需要它们的功能是更改对象,而不是返回输出
当您计算
print(lis.append(4))
时,解释器调用lis.append(4)
,更改lis
并返回None
。现在,它移动到打印经过计算的表达式-print(None)
,这就是您得到的结果。有什么不明白的?你引用的链接问题完美地解释了这一点。将对append语句求值,并返回None。同时,列表也发生了变化。append
不是返回任何内容的数学函数。它是一组改变对象本身的指令。您希望得到什么结果?根据您的看法,评估顺序的哪一部分似乎很麻烦<代码>打印(lis.append(4))首先计算lis.append(4)
到None
,然后打印。哦,好的。抱歉,Python新手!如果有5个人给了我同样的答案,这个问题真的“不清楚”吗?
lis = [1,2,3]
print(lis.append(4))
# Returns None
#############
lis = [1,2,3]
lis.append(4)
print(lis)
# Returns [1,2,3,4]