为什么在Python中使用“ sorted”而不是“ sort”?

时间:2019-09-06 13:03:24

标签: python

对于这门语言是陌生的,我无法理解为什么在Python中两个内置函数sortedreversed以过去分词形式命名,而其他类似{{ 1}}或format以动词形式命名。

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

在语义上,我希望 reverse 返回一个布尔值-如 sorted?所示,它指示传递的列表是否已排序,但是可能是因为其他语言对我的影响。

但是以这种我看不见的方式命名sortedsorted的理由是什么吗?


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

但本着同样的精神,reversed不能命名为filter,而filtered是否不能命名为format吗?跨语言命名会更一致吗?


更新2 :由于该问题据说是基于观点的,所以这样命名可能只是语言设计者的意见。命名Python的内置函数并使它们保持一致可能没有任何根据。

如果有理由,请问formatted是否也可以format以获得统一性和一致性?

1 个答案:

答案 0 :(得分:4)

在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函数。