Python源代碼的編譯的具體方案應用描述
在計算機語言中Python源代碼一般的情況下是不進行編譯的,只是通過幾個文件就能運用的,以下的文章主要是通過Python源代碼的相關(guān)代碼來具體描述Python源代碼的編譯是如何進行的。
我們一般使用這樣的命令運行一個python程序:
- C:\> python im.py
其中,im.py文件的內(nèi)容是:
- #!/usr/bin/env python
- import mymodule
- mymodule.say(”hello”)
執(zhí)行這一命令后,Python解釋器其實并不一定會讀入mymodule.py文件,它會嘗試讀取mymodule.pyc文件或者mymodule.pyo文件。如果都失敗了,或者mymodule.py文件比mymodule.pyc/mymodule.pyo新,才轉(zhuǎn)而讀入mymodule.py文件。
Python只懂得解釋執(zhí)行字節(jié)碼,所以mymodule.py文件讀入后***件事就是先進行編譯。編譯的結(jié)果會被嘗試保存到mymodule.pyc文件中。等一下會討論如何控制Python的編譯過程。
雖然與C++/Java這樣的靜態(tài)語言一樣,采用了編譯(compile)這個術(shù)語,實際情況還是有所不同的。首先,最明顯的一點,Python源代碼編譯的最終結(jié)果不是機器碼,而是字節(jié)碼。Python的編譯實際上主要是進行文法分析,生成一個抽象語法樹,然后轉(zhuǎn)儲成字節(jié)碼形式了事。#t#
從上面的介紹可以發(fā)現(xiàn)Python的編譯與C++相去甚遠。不過倒與Java有些相像,因為它們都生成字節(jié)碼。憑良心說,Java的編譯過程比Python先進很多。Java的解釋器在執(zhí)行Java字節(jié)碼的時候,會使用JIT,將循環(huán)操作等熱點轉(zhuǎn)化成為機器碼。所以有時候Java的性能能夠達到接近C++的級別。
Python缺少JIT并非故意所為,而是缺少人力資源。現(xiàn)在已經(jīng)有一個pysco的外部模塊,據(jù)說能大大提高Python代碼的速度,不過這個模塊還沒有進入Python的官方代碼。
以上的文章就是對Python源代碼的編譯的實際操作步驟的部分介紹。