在 python 中,对象就是 C 中结构体在堆上申请的一块内存,一般来说,
对象不能静态初始化,并且也不能在栈上空间生存。唯一的例外就是类型
对象,python 中所有的內建的类型对象(整数类型对象,字符类型对象)
都是静态初始化的
python 架构
外部调用
- Core Modules
- Library
- User-defined Modules
Python Core
- Scanner : 即词法分析,将 python 代码分为一个个 token
- Parser : 即语法分析,根据 token 建立 AST
- Compiler : 根据 AST 生成 python 字节码
- Code Evauator : 执行字节码
Runtime Environment
- Object/Type Structure : Python 中各种数据结构的 C 实现
- Memory Allocator : 内存申请,分配,python 运行时与 C 中 malloc 的接口
- Current State of Python :解释器在执行字节码时的不同状态
源代码结构
- Doc : 文档
- Include : 头文件,用户自定义的 C/C++ 扩展模块需要放到这里
- Lib : python 标准库,全部用 python 实现
- Modules : C 语言编写的模块, 主要考虑对性能要求非常苛刻
- Objects : python 全部内建对象, list, dict, set 等
- Parser : Scanner 和 Parser 部分。
- Python : Compiler 和 Code Evauator 部分
- Tools : 周边工具,gdb, ccbench, iobench, pybench 等
后续主题
- python 常用对象
- python 编译时
- python 运行时
- python 字节码
- python 控制流
- python 函数机制
- python 类机制
- python 运行环境初始化
- python 模块机制
- python 多线程机制
- python 内存管理机制
系好安全带,让我们开始 python 源码之旅。