官术网_书友最值得收藏!

0.1 Python總體架構

Python的整體架構主要分為3個部分,如圖0-1所示。

圖0-1 Python總體架構

圖0-1的左邊是Python提供的大量模塊、庫以及用戶自定義的模塊。比如在執行import os時,這個os就是Python內置的模塊。當然,用戶還可以通過定義模塊來擴展Python系統。

圖0-1的右邊是Python的運行時環境,包括對象/類型系統(Object/Type Structures)、內存分配器(Memory Allocator)和運行時狀態信息(Current State of Python)。運行時狀態維護了解釋器在執行字節碼時不同狀態(比如,正常狀態和異常狀態)之間切換的動作,我們可以將它視為一個巨大而復雜的有窮狀態機。內存分配器則全權負責Python中創建對象、內存的申請工作。實際上,它就是Python運行時與C中malloc的一層接口。而對象/類型系統則包含Python中存在的各種內置對象,比如整數、list和dict,以及各種用戶自定義的類型和對象。

圖0-1的中間部分是Python的核心——解釋器(Interpreter),或者稱為虛擬機。在解釋器中,箭頭的方向指示了Python運行過程中的數據流方向。其中,Scanner對應詞法分析——將文件輸入的Python源碼或從命令行輸入的Python源碼切分為一個個token;Parser對應語法分析——在Scanner的分析結果上進行語法分析,建立抽象語法樹(AST);Compiler根據建立的AST生成指令集合——Python字節碼(Bytecode),就像Java編譯器和C#編譯器所做的那樣;Code Evaluator執行這些字節碼,因此又被稱為虛擬機。

圖0-1中,解釋器與右邊的對象/類型系統、內存分配器之間的箭頭表示使用關系;而與運行時狀態之間的箭頭表示修改關系,即Python在執行的過程中會不斷地修改當前解釋器所處的狀態,在不同的狀態之間切換。

主站蜘蛛池模板: 麻栗坡县| 巫山县| 常宁市| 延边| 仲巴县| 黑水县| 北宁市| 西盟| 麻江县| 治多县| 弋阳县| 友谊县| 衡南县| 尉氏县| 阳新县| 韶关市| 龙游县| 邵武市| 洛浦县| 宁河县| 南岸区| 玛沁县| 六枝特区| 烟台市| 建始县| 宜良县| 高尔夫| 股票| 女性| 江安县| 舟山市| 雷州市| 汾西县| 鹿泉市| 利川市| 张掖市| 雷州市| 卢湾区| 库伦旗| 屯昌县| 通渭县|