首页 > 解决方案 > 为什么在 Python 中使用 `sorted` 而不是 `sort`?

问题描述

作为该语言的新手,我无法理解为什么在 Python 中这两个内置函数sortedreversed以过去分词形式命名,而其他函数则喜欢formatfilter以动词形式命名。

为什么不能像其他几种语言一样sort命名这些函数?reverse

从语义上讲,我宁愿期望sorted返回一个布尔值——就像sorted? ,表示通过的列表是否排序,但这可能是因为其他语言对我的影响。

但是命名sortedreversed这种方式有我看不到的原因吗?


更新,因为几乎所有的答案/评论都没有抓住重点。我知道这两个函数都返回新对象而不修改传递给它们的内容。

但本着同样的精神,filter不能命名filteredformat不能命名formatted?这不是更一致的跨语言命名吗?


更新 2:由于这个问题应该是基于意见的,因此命名它可能只是语言设计者的意见。命名 Python 的内置函数并保持它们的一致性可能没有任何理由。

如果有理由,请帮助回答是否format也可能是formatted为了统一性和一致性?

标签: python

解决方案


在 Python 中,sort是就地排序函数,sorted是返回新排序集合的函数:

a = [2,3,1,4]
print(sorted(a))
print(a)
print(a.sort())
print(a)

输出:

[1, 2, 3, 4]
[2, 3, 1, 4]
None
[1, 2, 3, 4]

第一个打印是排序列表。原始列表在它之后没有改变。第三次打印是a.sort-的结果None(因为它什么都不返回)。并且在这个函数调用之后对原始列表进行排序。

同样的行为也适用于reverse/reversed函数。


推荐阅读