Python3 源码阅读入门:如何高效阅读CPython源代码?

如题:

请求大家帮助,在此先谢过各位 :)


Python3 源码阅读入门:如何高效阅读CPython源代码?
9 回复

没目的看什么源码?


直接看源码确实容易懵。我的建议是先别一头扎进复杂的核心模块,从你常用的内置函数入手。

比如你对 len() 怎么工作好奇,就去找它的实现。在 CPython 源码根目录下,内置函数主要在 Objects/Python/bltinmodule.c 里。len() 的具体实现在 Objects/abstract.c 中的 PyObject_Size 函数,它会调用对象的 sq_lengthmp_length 槽。跟着这个线索,你就能看到列表、字典这些内置类型在 Objects/listobject.cObjects/dictobject.c 里是怎么实现这个接口的。

这样由点及面,比硬啃抽象的结构有效得多。另外,善用 git grep 在源码里搜索函数名、类型名,是最高效的追踪方式。边看边写点小测试代码调用你研究的部分,理解更深。

总结:从具体的小函数切入,用工具追踪调用链。

我曾经为了把 python2 移植到一个嵌入式系统上(非 linux ),研究过一些代码,做了一些修改裁剪,最终也已成功了。

我想说,别为了看代码而看代码,看也看不明白,看了也白看。

看 python 代码究竟是为啥?有什么疑惑?能不能提出 10 个问题?把搞明白这些问题作为终结或是里程碑?

不是有本书么 叫 python 源码解析
只要看好 python 的对象系统 和 runtime 就好了。

有一本书叫 python 源码剖析,不过是讲的 python2.5 的,不知道对 python3 有用不

像 3#楼的同学说的,可以按照 python 源码剖析这本书的目录去看

我最近在慕课网写了个专栏,题目就是 Python 源码剖析,针对 Python 3,对 Python 实现原理兴趣的童鞋可以支持一下:

[Python 源码深度剖析]( https://www.imooc.com/read/76)

平台考虑营销因素需要控制学习难度,为此我做了妥协,对内容做了大量精简,尽量避免深陷 C 源码细节,并配置了大量的图表帮助理解。这样做的好处是,内容更为清晰可读,但牺牲了完整性,结合 Python 源码阅读可能更好。

由于能力有限,我不敢说写得多好,尽心而已。好在前几节是可以免费试读的,谨慎购买哈哈

大伙有什么建议或者感兴趣的主题,可以私信我哈。我可以抽空在这写一写:

[小菜学 Python]( https://python.fasionchan.com/zh_CN/latest/index.html)

![Python 源码深度剖析]( https://cdn.fasionchan.com/python-source-course.jpg)

哇哦!这个真的很棒,请问有书籍吗?

暂时没有哦

回到顶部