1. 前言
Python程序的代碼是如何組織的,在代碼完成編寫后,又是如何運行的,它其中的原理是怎么回事,大家對這些問題一定很感興趣。
接下來,兔子先生帶着大家一探究竟。
2. Python的總體架構
從頂層設計上來看,Python可以分為三大部分:
File Groups代碼文件 - 包括模塊、庫及用戶自定義的模塊。Interpreter解釋器 - 又稱Python虛擬機,對代碼分析理解,翻譯成字節流,並運行這些字節代碼。Runtime Env運行環境 - 包括運行時的對象、基礎類型結構、內存分配器和實時的運行狀態信息。

3. File Groups
File Groups就是咱們的代碼,在Python的代碼的編寫過程中,會包含自己編寫的代碼模塊、依賴核心的模塊、第三方模塊和庫文件(Linux下是so庫,而Windows下面則是dll庫)
比如下面一段代碼:
from datetime import date
now = date.today()
import requests
r = requests.get('https://www.xtuz.net')
其中 datetime 就是核心模塊, requests 則屬於第三方模塊,這段代碼本身就屬於用戶的自定義代碼模塊了。
4. Interpreter
Scanner 負責詞法分析的工作,將代碼一行一行切分為 token,Parser 則負責語法分析,將 Token 組織為抽象語法樹,Compiler 則將語法樹轉化為指令集合的字節碼流,最后由 Code Evaluator 來執行這些字節碼。
下圖是.pyc文件內容,即字節碼流。

5. Runtime Env
Object 和 Type Structure 分別是程序在運行過程中生成的對象和Python中的自帶內建對象,如int、List、dict等。
而 Memory Allocator 則負責申請創建對象需要的內存,本質就是封裝了 C 語言里面的 malloc() 函數。
Current State 負責維護運行時的各類狀態信息,以便在程序執行過程中如果發生狀態變化(正常態和異常態)時,仍然能正常運行。
更多內容
查看原文 >>> Python源碼剖析 - Python的總體架構
