1. 程式人生 > 程式設計 >python屬於解釋型語言麼

python屬於解釋型語言麼

通常的說法,編譯代表著將一個高階語言轉化為 CPU 能執行的機器碼。當你編譯 C 的時候,的確是做的這樣的操作。編譯的結果是一個二進位制可執行檔案,這時你的系統可直接執行這個程式。

與此相對的,解釋的意思是這樣的:程式執行時每次讀原始檔中的一行程式碼,並執行相應的操作,就這樣一行一行的重複下去。當然,所謂的指令碼語言就是這麼執行的。

在 Python 中,原始碼會被編譯為更低階的一種形式,我們稱之為位元組碼。位元組碼是一串指令,和 CPU 的指令集類似。但是位元組碼並不直接被 CPU 執行,而是在虛擬機器中執行的。當然,這裡的虛擬機器並不模仿整個作業系統的環境,只是提供了位元組碼執行的一個環境。

Python 還有一個重要的特性,就是互動式命令列。你可以敲入一行 Python 語句,然後立刻回車執行。實際上,即使是這個過程,Python 同樣是先轉為位元組碼,然後執行。而這個互動式命令列這個特性,在很多編譯型語言裡是沒有的。同樣因為沒有顯示的呼叫編譯程式,很多人將執行 Python原始檔的程式叫做 Python 直譯器。

解釋型語言和編譯型語言

計算機是不能夠識別高階語言的,所以當我們執行一個高階語言程式的時候,就需要一個“翻譯機”來從事把高階語言轉變成計算機能讀懂的機器語言的過程。這個過程分成兩類,第一種是編譯,第二種是解釋。

編譯型語言在程式執行之前,先會通過編譯器對程式執行一個編譯的過程,把程式轉變成機器語言。執行時就不需要翻譯,而直接執行就可以了。最典型的例子就是C語言。

解釋型語言就沒有這個編譯的過程,而是在程式執行的時候,通過直譯器對程式逐行作出解釋,然後直接執行,最典型的例子是Ruby。

通過以上的例子,我們可以來總結一下解釋型語言和編譯型語言的優缺點,因為編譯型語言在程式執行之前就已經對程式做出了“翻譯”,所以在執行時就少掉了“翻譯”的過程,所以效率比較高。但是我們也不能一概而論,一些解釋型語言也可以通過直譯器的優化來在對程式做出翻譯時對整個程式做出優化,從而在效率上接近編譯型語言,而不能超過編譯型語言。

此外,隨著Java等基於虛擬機器的語言的興起,我們又不能把語言純粹地分成解釋型和編譯型這兩種。

用Java來舉例,Java首先是通過編譯器編譯成位元組碼檔案,然後在執行時通過直譯器給解釋成機器檔案。所以我們說Java是一種先編譯後解釋的語言。

內容擴充套件:

一個經常聽見的問題,那就是:Python 是解釋型的語言嗎?它會被編譯嗎?這個問題沒有想象中那麼好回答。和很多人認識世界一樣,習慣以一個簡單的模型去評判一些事物。而事實上,裡面包含了很多很多的細節。

通常的說法,編譯代表著將一個高階語言轉化為 CPU 能執行的機器碼。當你編譯 C 的時候,的確是做的這樣的操作。編譯的結果是一個二進位制可執行檔案,這時你的系統可直接執行這個程式。

與此相對的,解釋的意思是這樣的:程式執行時每次讀原始檔中的一行程式碼,並執行相應的操作,就這樣一行一行的重複下去。當然,所謂的指令碼語言就是這麼執行的。

但事實上,上面的定義有太多的侷限。一門真正的語言,為了擁有更多有用和強大的特性,通常採用了各種各樣的實現方式。我們可以將編譯理解為更通用一些:將一種語言轉化為另一種語言形式。通常來說,源語言比目標語言要更高階一些,比如將 C 轉化為機器碼。當然,JavaScript 8 到 JavaScript 5 的轉化也算是一種編譯。

到此這篇關於python屬於解釋型語言麼的文章就介紹到這了,更多相關python是解釋型語言嗎內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!