在剖析源碼的過程中,最好的學習方法是不斷根據掌握的知識修改Python源代碼,以印證自己的知識和猜想。
一、Python總體架構
在最高的層次上,Python的整體架構可以分為三個主要部分,如上圖,左邊的Core Modules(內置模塊)、Library(庫)以及User-defined Modules(用戶自定義模塊)。
在圖的右邊,是Python的運行時環境,包括對象/類型系統(Object/Type stuctures)、內存分配器(Memory Allocator)和運行時狀態信息(Current State of Python )。運行時狀態維護了解釋器在執行字節碼時不同的狀態(比如正常狀態和異常狀態)之間切換的動作,我們可以將它視為一個巨大而復雜的有窮狀態機。內存分配器則全權負責Python中創建對象時,對內存的申請工作,實際上它就是Python運行時與C中malloc的一層接口。而對象/類型系統則包含了Python中存在的各種內建對象,比如整數、list和dict,以及各種用戶自定義的類型和對象。
中間的部分,是python的核心——解釋器(interpreter),也稱為虛擬機。在解釋器中,箭頭的方向指示了Python運行過程中的數據流方向。其中Scanner對應詞法分析,將文件輸入的Python源代碼或從命令行輸入的一行行Python代碼切分為一個個的token(指令): Parser對應語法分析,在Scanner的分析結果上進行語法分析,建立抽象語法樹(AST):Compiler(編譯器)是根據建立的AST生成指令集合——Python字節碼(byte code),最后由Code Evaluator來執行這些字節碼。因此,Code Evaluator又可以被稱為虛擬機。
圖中,在解釋器與右邊的對象/類型系統、內存分配器之間的箭頭表示"使用"關系;而與運行時狀態之間的箭頭表示“修改”關系,即Python在執行的過程中會不斷地修改當前解釋器所處的狀態,在不同的狀態之間切換。
二、Python源代碼結構
Python源碼下載地址:
選擇相應的版本下載,本文以最新版進行分析。 wget
Include: 該目錄下包含了Python提供的所有頭文件,如果用戶需要自己用C或C++來編寫自定義模塊擴展Python,就需要用到這里提供的頭文件。
Lib: 該目錄包含了Python自帶的所有標準庫,Lib中的庫都是用Python語言編寫的。
Modules: 該目錄中包含了所有用C語言編寫的模塊,比如random、cStringIO等。Modules中的模塊是那些對速度要求非常嚴格的模塊,而有一些對速度沒有太嚴格要求的模塊,比如os,就是用Python編寫的,并且放在Lib目錄下。
Parser: 該目錄中包含了Python解釋器中的Scanner和Parser部分,即對Python源代碼進行詞法分析和語法分析的部分。除了這些,Parse目錄下還包含了一些有用的工具,這些工具能夠根據Python語言的語法自動生成Python語言的詞法和語法分析器,與YACC非常類似。
Objects: 該目錄中包含了所有Python的內建對象,包括整數、list、dict等。同時,該目錄還包括了Python在運行時需要的所有的內部使用對象的實現。
Python: 該目錄下包含了Python解釋器中的Compiler和執行引擎部分,是Python運行的核心所在。
三、編譯安裝
./configure
make all
make install
泰州潤揚網絡策劃服務有限公司專注泰州網絡公司,泰州網站建設,
從域名選擇-工信部備案-首頁風格確認-內頁欄目設置-內頁框架設計-后臺搭建管理-新聞定期發布-定期優化設置-效果統計-月度反饋。
泰州網站建設,泰州網絡推廣,交給我們:放心、省心。
我們不做第一,只做唯一,以真誠服務、實在做事的態度為您做好交給我們的每一項工作。
泰州網絡公司、泰州網站建設、泰州網絡策劃、泰州APP開發、泰州網絡推廣、泰州微信營銷、泰州百度信息流推廣,泰州軟件開發,泰州百度愛采購
本文由:潤揚網絡策劃編輯部小編 整理發布、翻版必究 ,如涉及各項侵權請及時與我們聯系修改:13961039617 合作熱線:19825583557 我們期待與您合作