关于 Python 的 len 函数

2019-04-25 15:22:16 +08:00
 piaochen
一直不理解 Python 中为嘛有 len 这种函数存在
例如要获取字符串的长度
要使用:
len('ABC')
实际上是调用的
'ABC'.__ len __()
为嘛不直接像其他语言那样设计成调用'ABC'.len()???
请指教。
3798 次点击
所在节点    Python
27 条回复
msg7086
2019-04-25 22:43:04 +08:00
有洁癖可以去用 Ruby ……
Dvel
2019-04-25 23:28:51 +08:00
《流畅的 Python 》中文版在 12 页,说的好像有点道理:
lihongjie0209
2019-04-26 08:58:17 +08:00
@huangzhe8263 你怎么保证它传给你的对象支持 len ?你又没有静态检查
chinesehuazhou
2019-04-26 10:16:18 +08:00
@lithiumii 那篇帖是我发的,没想到才几天就有人问。不过,这里的回复,相比起来,友善的、有理性的多些。(目前来看)
kuangwinnie
2019-04-26 12:12:54 +08:00
我感觉这个是个特别特别特别好的设计

并没有必要分清 size(), .length, .length() 这种结构啊。。。
如果你需要弄清一个有长度的东西,那就直接 len() 非常符合 py 本身的哲学。
Arnie97
2019-04-26 14:23:38 +08:00
从设计者的角度来看,可以类比做 sizeof 单目运算符,然后为了跟其他运算符的调用规范保持一致。

当然,这一设计是否比后缀形式更好就是另一个话题了。我个人认为后缀 /管道一类的设计减少了括号嵌套,语序符合实际执行顺序,有利于可读性;但是,你不能指着一门 1991 年发布的语言,问他的调用规范为什么没有学 1995 年的 Java 和,1995 年的 Ruby 和 1998 年的 C++。
mizuku
2019-04-27 14:26:59 +08:00
这是 Python 哲学的一部分.不然就到处都是 getLength,setLength 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/558616

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX