Python是高級語言,是獨立于機器面向過程或?qū)ο蟮恼Z言,也可以說是人定義出來的語言,機器語言是機器能夠去識別處理的語言,通過編譯器與解釋器就能夠?qū)ython語言轉(zhuǎn)成機器語言從而被機器處理執(zhí)行
1. 編譯器與解釋器的區(qū)別
編譯器是整體編譯再執(zhí)行,而解釋器是邊解釋便執(zhí)行。
舉個簡單的例子,編譯器就相當(dāng)于你買了一桶海底撈,那么所有海底撈食材都是整體“編譯”好,只要通過倒水(執(zhí)行)就可以吃,而解釋器相當(dāng)于你去海底撈門店,然后菜是一道一道上(一條一條解釋這是啥菜),你是一道一道放入湯中吃(執(zhí)行)。
編譯器的特點是:
- 運行速度快(倒水即可),但任何一個小改動都要重新編譯(重新設(shè)置海底撈食材整合到海底撈桶中)。
- 可脫離編譯環(huán)境(脫離海底撈門店)。
- 代表語言:C語言
解釋器的特點是:
- 運行速度慢,但部分改動不需要整體再重新編譯(不要這道菜我就不把這道菜下湯/新加菜下湯)。
- 不可脫離解釋環(huán)境(不能離開海底撈門店,出去了對空氣下鍋嘛)。
- 代表語言:Python
2. Python解釋器的種類
CPython:官方版本解釋器。用C語言開發(fā),所以字如其名叫CPython,使用最廣,也是我們平常所使用的
IPython:基于CPython之上的交互式解釋器,實現(xiàn)代碼功能與CPython無異,只是在視圖交互上體驗有所增強
PyPy:追求執(zhí)行速度的解釋器。采用JIT技術(shù),對Python代碼進行動態(tài)編譯,顯著提高Python代碼執(zhí)行速度。絕大部分CPython代碼都能在PyPy上運行,但還是有所不同,這會導(dǎo)致相同的Python代碼在兩種解釋器執(zhí)行下結(jié)果不同
3. Python的運行機制
python的源文件通過解釋器進行模塊的加載及鏈接,然后將解釋完成的字節(jié)碼存入內(nèi)存,提供給CPU進行操作,然后寫入本地的.pyc文件,其觸發(fā)條件是判斷 是否存在.pyc文件+比較源文件與編譯的.pyc文件的時間戳
Python運行機制.png