This section gives an overview of CPython’s code structure and providesa summary of file locations for modules and built-ins.
For a Pythonmodule, the typical layout is:
Lib/<module>.py
Modules/_<module>.c
(if there’s also a C accelerator module)
Lib/test/test_<module>.py
Doc/library/<module>.rst
For anextension module, the typical layout is:
Modules/<module>module.c
Lib/test/test_<module>.py
Doc/library/<module>.rst
ForBuilt-in Types, the typical layout is:
Objects/<builtin>object.c
Lib/test/test_<builtin>.py
ForBuilt-in Functions, the typical layout is:
Some exceptions to these layouts are:
built-in typeint
is atObjects/longobject.c
built-in typestr
is atObjects/unicodeobject.c
built-in modulesys
is atPython/sysmodule.c
built-in modulemarshal
is atPython/marshal.c
Windows-only modulewinreg
is atPC/winreg.c
The CPython code base is constantly changing and evolving.Here’s a sample of references about CPython’s architecture aimed atbuilding your understanding of CPython internals and its evolution:
Title | Brief | Author | Version |
---|---|---|---|
Code walk from Parser, AST, Sym Table and Objects | Louie Lu | 3.7.a0 | |
The missing Python AST docs | Thomas Kluyver | 3.6 | |
A guide for how CPython REPL works | Guido van Rossum | 3.5 | |
How CPython async I/O, generator and coroutine works | Philip Guo | 3.5 | |
Reliable patterns of coding Python Extensions in C | Paul Ross | 3.9+ | |
Your Guide to the CPython Source Code | Anthony Shaw | 3.8 |
Title | Brief | Author | Version |
---|---|---|---|
ceval, objects, pystate and miscellaneous topics | Yaniv Aknin | 3.1 | |
Objects, Symbol tables and miscellaneous topics | Eli Bendersky | 3.x | |
Code walk from Parser, AST, Sym Table and Objects | Prashanth Raghu | 2.7.12 | |
CPython internals: A ten-hour codewalk through the Python interpreter source code | Code walk from source code to generators | Philip Guo | 2.7.8 |