Python原始碼剖析 Python的總體架構

2021-10-03 17:53:02 字數 1096 閱讀 1627

python程式的**是如何組織的,在**完成編寫後,又是如何執行的,它其中的原理是怎麼回事,大家對這些問題一定很感興趣。

接下來,兔子先生帶著大家一**竟。

從頂層設計上來看,python可以分為三大部分:

file groups就是咱們的**,在python的**的編寫過程中,會包含自己編寫的**模組、依賴核心的模組、第三方模組和庫檔案(linux下是so庫,而windows下面則是dll庫)

比如下面一段**:

from datetime import date

now = date.today(

)import requests

r = requests.get('')

其中datetime就是核心模組,requests則屬於第三方模組,這段**本身就屬於使用者的自定義**模組了。

scanner負責詞法分析的工作,將**一行一行切分為 token,parser則負責語法分析,將 token 組織為抽象語法樹,compiler則將語法樹轉化為指令集合的位元組碼流,最後由code evaluator來執行這些位元組碼。

下圖是.pyc檔案內容,即位元組碼流。

objecttype structure分別是程式在執行過程中生成的物件和python中的自帶內建物件,如int、list、dict等。

memory allocator則負責申請建立物件需要的記憶體,本質就是封裝了 c 語言裡面的malloc()函式。

current state負責維護執行時的各類狀態資訊,以便在程式執行過程中如果發生狀態變化(正常態和異常態)時,仍然能正常執行。

python原始碼剖析 Python原始碼剖析

第頁共 頁python 原始碼剖析 物件機制 1.物件 在python 的世界中,一切都是物件,乙個整數是乙個物件,乙個字串也是 乙個物件,更為奇妙的是,型別也是乙個物件,整數型別是乙個物件,字串類 型也是乙個物件。從 年guido 在那個聖誕節揭開 python 世界的大幕開始,一直到現在,pyt...

原始碼剖析 Hashtable 原始碼剖析

hashtable同樣是基於雜湊表實現的,同樣每個元素都是key value對,其內部也是通過單鏈表解決衝突問題,容量不足 超過了閾值 時,同樣會自動增長。hashtable也是jdk1.0引入的類,是執行緒安全的,能用於多執行緒環境中。hashtable同樣實現了serializable介面,它支...

Python原始碼剖析 Dict

為了刻畫某種關係,現代的程式語言都會提供關聯式的容器。關聯式容器中的元素分別是以 鍵 key 或值 value 這樣的形式存在。例如 3,5 3,6 就是一對對應的鍵與值。python中的關聯式容器是pydictobject。python通過pydictobject建立執行python位元組碼的執行...