Python 内部实现请教:用 len(l)获取普通 list 对象的大小时, Python 内部需要实时计算这个大小吗,还是对象本身有个属性就是“size”,直接读就行了?

2019-09-11 20:04:10 +08:00
 xFrank

如题。

2835 次点击
所在节点    Python
9 条回复
wwqgtxx
2019-09-11 20:10:09 +08:00
wwqgtxx
2019-09-11 20:13:45 +08:00
顺便补充一下上面用到的 Py_SIZE 的实现
https://github.com/python/cpython/blob/master/Include/object.h#L123
ztcaoll222
2019-09-11 20:23:49 +08:00
具体看对象是怎么实现的 __len__
list 是直接调用的 c 接口, 源码楼上有了
xFrank
2019-09-11 20:25:27 +08:00
我们平常用的 python 都是 cpython 实现的?
平常是指从这里下载的那种: https://www.python.org/downloads/
或者 Linux 下用 apt install 直接装的
wwqgtxx
2019-09-11 20:28:16 +08:00
@xFrankc cpython 是 python 的官方实现,你默认下载的都是这个实现(第三方主要指 pypy jython 这类)
xFrank
2019-09-11 20:29:43 +08:00
@wwqgtxx 好的,多谢
smallpython
2019-09-11 20:36:34 +08:00
我的理解这些语言在设计的时候,凡是能让程序更快的设计,他都会这么做
love
2019-09-11 21:03:27 +08:00
这个属性用得到处都是,条件判断什么的,如果是还要计算那画面不敢想象
ipwx
2019-09-12 12:31:50 +08:00
你该不会 Java 程序员转来的吧? 容器区分的这么详细。

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

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

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

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

© 2021 V2EX