1. 程式人生 > >Python 原始碼分析之初體驗

Python 原始碼分析之初體驗

在 python 中,物件就是 C 中結構體在堆上申請的一塊記憶體,一般來說,
物件不能靜態初始化,並且也不能在棧上空間生存。唯一的例外就是型別
物件,python 中所有的內建的型別物件(整數型別物件,字元型別物件)
都是靜態初始化的

python 架構

python arch

外部呼叫

  • Core Modules
  • Library
  • User-defined Modules

Python Core

  1. Scanner : 即詞法分析,將 python 程式碼分為一個個 token
  2. Parser : 即語法分析,根據 token 建立 AST
  3. Compiler : 根據 AST 生成 python 位元組碼
  4. 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 等

後續主題

  1. python 常用物件
  2. python 編譯時
  3. python 執行時
  4. python 位元組碼
  5. python 控制流
  6. python 函式機制
  7. python 類機制
  8. python 執行環境初始化
  9. python 模組機制
  10. python 多執行緒機制
  11. python 記憶體管理機制

繫好安全帶,讓我們開始 python 原始碼之旅。