为什么打印一些内置方法返回 VALUES,而打印一些 NONE?

Why printing some inbuilt methods return VALUES while some NONE?

提问人:malavi pande 提问时间:6/17/2023 最后编辑:Tim Robertsmalavi pande 更新时间:6/17/2023 访问量:26

问:

我正在尝试了解以下代码片段之间的输出差异:

arr = [1, 2, 3, 4, 5]
print(arr.sort()) // Output: None
print(arr.pop()) // Output: 5

在第一个片段中,我知道它被调用,它对列表进行排序。但是,当我尝试打印排序列表时,它会输出 .在第二个代码片段中,我理解调用它是为了删除并返回列表的最后一个元素,即 .arr.sort()Nonearr.pop()5

有人可以向我解释为什么第一个片段输出而不是排序列表,并确认我对第二个片段输出的理解吗?None

Python 方法 返回 nonetype

评论


答:

0赞 Amiel 6/17/2023 #1

该方法就更改列表的值并返回值 。换言之,与返回感兴趣值的方法相反,您不会通过将其结果分配给变量来使用此方法。相反,它会更改列表本身。它在你的情况下是不可见的,因为列表已经排序,但如果你使用未排序的列表:list.sortNone

arr = [5, 1, 2, 3, 4]
print(arr.sort()) // Output: None
print(arr) // Output: [1, 2, 3, 4, 5]

您可以注意到,即使该方法是在 a 中调用的,列表也已更改(这有时可能会导致难以找到的错误)。print

该方法不同,因为它就地更改列表(删除给定索引中存在的项目)并返回此项目 - 在您的例子中为 5。因此打印 5.list.popprint(arr.pop())