这个仓库是笔者分析 cpython 源码的时候做的记录/博客
笔者将尝试尽可能的讲清楚 cpython 底层实现的细节
# 基于 3.8.0a0 版本
cd cpython
git reset --hard ab54b9a130c88f708077c2ef6c4963b632c132b3
这里的内容适用于有过 python 编程经验并且对解释器的实现感兴趣的同学, 如果你需要的的是入门到进阶之类的学习资料, 请参考 awesome-python-books
- dict
- long/int
- unicode/str
- set
- list(timsort)
- tuple
- bytes
- bytearray(buffer protocol)
- float
- func(user-defined method)
- method(builtin method)
- iter
- gen(generator/coroutine/async generator)
- class(bound method/classmethod/staticmethod)
- complex
- enum
- type(mro/metaclass/类/实例的创建过程)
- re(正则)
- asyncio
- gil(全局解释器锁)
- gc(垃圾回收机制)
- memory management(内存管理机制)
- descr(访问(类/实例)属性时发生了什么/
__get__
/__getattribute__
/__getattr__
) - exception(异常处理机制)
- module(import实现机制)
- frame
- code
- slots/
__slots__
(属性在类/实例创建时是如何初始化的) - thread(线程)
- PyObject(基础篇/概述)
- C API(python 性能分析和 C 扩展)
- Cython(C extension)
- Boost C++ libaries (C++ extension)
- C++ 扩展
- 写 NumPy 扩展
- 绕过 GIL
以下的资料笔者遵循先阅读后推荐的原则
- CPython internals - Interpreter and source code overview(油管视频)
- < < Inside The Python Virtual Machine > >
- < < Python源码剖析 > >
- rushter(blog/eng)
- YET ANOTHER PYTHON INTERNALS BLOG(blog/eng)
- Junnplus(blog/中文)
- manjusaka(blog/中文)
- aoik-Python's compiler series(blog/eng)
欢迎所有形式的贡献
- 提交一个 pull request
- 如果你想分享任何你知道的相关知识
- 发布一篇文章
- 更正技术性错误
- 更正语法性错误
- 翻译
- 其他情况, 不限于上述
- 提交一个 issue
- 任何建议
- 任何问题
- 更正错误
- 其他情况, 不限于上述