足彩14场和任选9场都在这里/勇士队伊戈达拉/保超级联赛2024/科比布莱恩特 - 篮球比分直播188

剖析Python源代碼
發布時間:2019-11-04

在剖析源碼的過程中,最好的學習方法是不斷根據掌握的知識修改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  我們期待與您合作