Python源碼的三大應用技術
在計算機的應用過程Python源碼剖析是經常被用到的計算機語言,這篇文章就是對Python源碼剖析包括的三個方面做一詳細介紹,如果你想更好的了解相關的計算機相關的語言,不防瀏覽下面的文章。
1. Python總體架構
在最高的層次上,Python的整體架構可以分為四個主要的部分,整個架構如圖1所示。在左邊,是Python提供的大量的模塊,庫以及用戶自定義的模塊。比如在執行import os時,這個os就是Python內建的模塊,當然用戶還可以通過自定義模塊來擴展Python系統。在本系列文章中,我們不會對這一部分進行過多的考察。
Python的運行時環境,包括對象/類型系統(Object/Type structures),內存分配器(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),就像Java編譯器和C#編譯器所做的那樣;最后由Code Evaluator來解釋并執行這些字節碼。因此,Code Evaluator又可以被稱為執行引擎。
在Interpreter與右邊的對象/類型系統,內存分配器之間的箭頭表示“使用”關系;而與運行時狀態之間的箭頭表示修改關系,即Python在執行的過程中會不斷地修改當前解釋器所處的狀態,在不同的狀態之間切換。#t#
2. Python源代碼的組織
中國有句老話,巧婦難為無米之炊。要分析Python源碼,首先當然要獲得Python源碼。
3. 編譯Python
好了,下載了Python的源代碼之后,我們就可以走出剖析Python源碼的第一步——編譯Python——了:)
Python2.4.1是在Visual Studio 2003環境下開發的,在PCBuild目錄下可以看到VS2003的工程文件,打開工程后,還需要進行一些設置,才能成功編譯。
我們還需要一個pythonnt_rc_d.h,這個文件在Python2.4.1的源碼包中沒有提供,必須要通過一個編譯make_versioninfo子工程才能自動生成。
好了,現在再編譯,一切都會順利完成了。