python - 为什么在 Python 中使用 `sorted` 而不是 `sort`?
问题描述
作为该语言的新手,我无法理解为什么在 Python 中这两个内置函数sorted
并reversed
以过去分词形式命名,而其他函数则喜欢format
或filter
以动词形式命名。
为什么不能像其他几种语言一样sort
命名这些函数?reverse
从语义上讲,我宁愿期望sorted
返回一个布尔值——就像sorted? ,表示通过的列表是否排序,但这可能是因为其他语言对我的影响。
但是命名sorted
和reversed
这种方式有我看不到的原因吗?
更新,因为几乎所有的答案/评论都没有抓住重点。我知道这两个函数都返回新对象而不修改传递给它们的内容。
但本着同样的精神,filter
不能命名filtered
,format
不能命名formatted
?这不是更一致的跨语言命名吗?
更新 2:由于这个问题应该是基于意见的,因此命名它可能只是语言设计者的意见。命名 Python 的内置函数并保持它们的一致性可能没有任何理由。
如果有理由,请帮助回答是否format
也可能是formatted
为了统一性和一致性?
解决方案
在 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
函数。
推荐阅读
- java - 当数组为空或为空时如何抛出 IllegalArgumentException?
- ios - Swift Array .append() 方法在 SwiftUI 中不起作用
- php - 当用户点击图片时,运行 JS 函数,同时将值发布到 php 脚本
- .net - 如何在 Windows 10 PRO 上的 Visual Studio 2019 中添加对 Windows.ApplicationModel.DataTransfer 命名空间的引用
- python - 无法使用 PDB 时如何调试挂起的 python 代码
- rust - Rust 中是否有类似于 Go 中的 bufio.Reader.ReadSlice 的东西?
- sql-server - SQL 服务器。为什么 UPPER 函数使用索引扫描
- python - 重新排列数据框熊猫中的行
- c++ - 图形到图形深度依赖性,深度缓冲区被破坏
- html - 使用网格将 3 张卡片保持在同一行