如何查看/usr/lib/python3.x下Python list的代码?为何找不到其类定义?
在哪里查看Python list的底层实现代码?
这是个非常常见的疑问!你在/usr/lib/python3.x路径下找不到list、dict这类内置数据结构的Python代码,核心原因是:它们根本不是用Python编写的。我们日常使用的Python大多是CPython(官方的C语言实现版本),这类核心内置类型为了追求极致性能,全部用C语言实现,存放在CPython的C源代码仓库中,而非系统安装的Python标准库的.py文件里。
具体的代码位置
如果你下载了对应版本的CPython源代码,list的实现主要分布在两个文件中:
Objects/listobject.c:这里包含了list所有方法(比如append()、pop()、extend())的底层C实现逻辑,以及list对象的核心操作代码。Include/listobject.h:这里定义了list对象的结构体和相关宏,是底层代码的头文件。
其他常见内置类型的代码位置也类似:
dict→Objects/dictobject.c和Include/dictobject.hstr→Objects/stringobject.c和Include/stringobject.h
为什么你grep到了topics.py的内容?
你执行grep -r 'class list' .得到的topics.py里的内容,只是pydoc工具用来生成文档的描述性文本,目的是给用户展示list类的文档说明,完全不是实际的实现代码,所以自然看不到真正的类定义逻辑。
如何获取CPython源代码?
你可以克隆CPython的官方仓库,或者下载对应Python版本的源码包(比如你用的是Python3.6,就选择3.6分支的源码),这样就能找到上述的C文件,查看list的底层实现了。
内容的提问来源于stack exchange,提问作者ankit
相关产品推荐
相关产品推荐

