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檔案內容,即位元組碼流。
object
和type 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位元組碼的執行...