python屬于解釋型語言么
通常的說法,編譯代表著將一個高級語言轉(zhuǎn)化為 CPU 能執(zhí)行的機器碼。當你編譯 C 的時候,的確是做的這樣的操作。編譯的結(jié)果是一個二進制可執(zhí)行文件,這時你的系統(tǒng)可直接運行這個程序。
與此相對的,解釋的意思是這樣的:程序運行時每次讀源文件中的一行代碼,并執(zhí)行相應的操作,就這樣一行一行的重復下去。當然,所謂的腳本語言就是這么運行的。
在 Python 中,源代碼會被編譯為更低級的一種形式,我們稱之為字節(jié)碼。字節(jié)碼是一串指令,和 CPU 的指令集類似。但是字節(jié)碼并不直接被 CPU 執(zhí)行,而是在虛擬機中執(zhí)行的。當然,這里的虛擬機并不模仿整個操作系統(tǒng)的環(huán)境,只是提供了字節(jié)碼執(zhí)行的一個環(huán)境。
Python 還有一個重要的特性,就是交互式命令行。你可以敲入一行 Python 語句,然后立刻回車執(zhí)行。實際上,即使是這個過程,Python 同樣是先轉(zhuǎn)為字節(jié)碼,然后執(zhí)行。而這個交互式命令行這個特性,在很多編譯型語言里是沒有的。同樣因為沒有顯示的調(diào)用編譯程序,很多人將執(zhí)行 Python源文件的程序叫做 Python 解釋器。
解釋型語言和編譯型語言
計算機是不能夠識別高級語言的,所以當我們運行一個高級語言程序的時候,就需要一個“翻譯機”來從事把高級語言轉(zhuǎn)變成計算機能讀懂的機器語言的過程。這個過程分成兩類,第一種是編譯,第二種是解釋。
編譯型語言在程序執(zhí)行之前,先會通過編譯器對程序執(zhí)行一個編譯的過程,把程序轉(zhuǎn)變成機器語言。運行時就不需要翻譯,而直接執(zhí)行就可以了。最典型的例子就是C語言。
解釋型語言就沒有這個編譯的過程,而是在程序運行的時候,通過解釋器對程序逐行作出解釋,然后直接運行,最典型的例子是Ruby。
通過以上的例子,我們可以來總結(jié)一下解釋型語言和編譯型語言的優(yōu)缺點,因為編譯型語言在程序運行之前就已經(jīng)對程序做出了“翻譯”,所以在運行時就少掉了“翻譯”的過程,所以效率比較高。但是我們也不能一概而論,一些解釋型語言也可以通過解釋器的優(yōu)化來在對程序做出翻譯時對整個程序做出優(yōu)化,從而在效率上接近編譯型語言,而不能超過編譯型語言。
此外,隨著Java等基于虛擬機的語言的興起,我們又不能把語言純粹地分成解釋型和編譯型這兩種。
用Java來舉例,Java首先是通過編譯器編譯成字節(jié)碼文件,然后在運行時通過解釋器給解釋成機器文件。所以我們說Java是一種先編譯后解釋的語言。
內(nèi)容擴展:
一個經(jīng)常聽見的問題,那就是:Python 是解釋型的語言嗎?它會被編譯嗎?這個問題沒有想象中那么好回答。和很多人認識世界一樣,習慣以一個簡單的模型去評判一些事物。而事實上,里面包含了很多很多的細節(jié)。
通常的說法,編譯代表著將一個高級語言轉(zhuǎn)化為 CPU 能執(zhí)行的機器碼。當你編譯 C 的時候,的確是做的這樣的操作。編譯的結(jié)果是一個二進制可執(zhí)行文件,這時你的系統(tǒng)可直接運行這個程序。
與此相對的,解釋的意思是這樣的:程序運行時每次讀源文件中的一行代碼,并執(zhí)行相應的操作,就這樣一行一行的重復下去。當然,所謂的腳本語言就是這么運行的。
但事實上,上面的定義有太多的局限。一門真正的語言,為了擁有更多有用和強大的特性,通常采用了各種各樣的實現(xiàn)方式。我們可以將編譯理解為更通用一些:將一種語言轉(zhuǎn)化為另一種語言形式。通常來說,源語言比目標語言要更高級一些,比如將 C 轉(zhuǎn)化為機器碼。當然,JavaScript 8 到 JavaScript 5 的轉(zhuǎn)化也算是一種編譯。
到此這篇關于python屬于解釋型語言么的文章就介紹到這了,更多相關python是解釋型語言嗎內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python按照行來讀取txt文件全部內(nèi)容(去除空行處理掉\t,\n后以列表方式返回)
這篇文章主要介紹了python按照行來讀取txt文件全部內(nèi)容 ,去除空行,處理掉\t,\n后,以列表方式返回,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-06-06Python中ArcPy柵格裁剪柵格(批量對齊柵格圖像范圍并統(tǒng)一行數(shù)與列數(shù))
本文介紹基于Python中ArcPy模塊,實現(xiàn)基于柵格圖像批量裁剪柵格圖像,同時對齊各個柵格圖像的空間范圍,統(tǒng)一其各自行數(shù)與列數(shù)的方法,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-02-02Python os.rename() 重命名目錄和文件的示例
今天小編就為大家分享一篇Python os.rename() 重命名目錄和文件的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10Python使用Appium在移動端抓取微博數(shù)據(jù)的實現(xiàn)
Appium是移動端的自動化測試工具,讀者可以類比為PC端的selenium。通過它,我們可以驅(qū)動App完成自動化的一系列操作,同樣也可以爬取需要的內(nèi)容,本文就來介紹一下如何在移動端抓取微博數(shù)據(jù),感興趣的可以了解一下2021-08-08Python?調(diào)用GPT-3?API實現(xiàn)過程詳解
這篇文章主要為大家介紹了Python?調(diào)用GPT-3?API實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02