Python 原始碼分析之初體驗
阿新 • • 發佈:2018-12-23
在 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 原始碼之旅。