最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python解釋執(zhí)行原理分析

 更新時間:2014年08月22日 11:16:55   投稿:shichen2014  
這篇文章主要介紹了Python解釋執(zhí)行原理,有助于讀者深入理解Python運行機制,需要的朋友可以參考下

本文較為詳細的分析了Python解釋執(zhí)行的原理,對于深入理解Python可以起到一定的幫助作用。具體分析如下:

首先,這里的解釋執(zhí)行是相對于編譯執(zhí)行而言的。我們都知道,使用C/C++之類的編譯性語言編寫的程序,是需要從源文件轉(zhuǎn)換成計算機使用的機器語言,經(jīng)過鏈接器鏈接之后形成了二進制的可執(zhí)行文件。運行該程序的時候,就可以把二進制程序從硬盤載入到內(nèi)存中并運行。

但是對于Python而言,python源碼不需要編譯成二進制代碼,它可以直接從源代碼運行程序。當(dāng)我們運行python文件程序的時候,python解釋器將源代碼轉(zhuǎn)換為字節(jié)碼,然后再由python解釋器來執(zhí)行這些字節(jié)碼。這樣,python就不用擔(dān)心程序的編譯,庫的鏈接加載等問題了。

對于python解釋語言,有以下3方面的特性:

1.每次運行都要進行轉(zhuǎn)換成字節(jié)碼,然后再有虛擬機把字節(jié)碼轉(zhuǎn)換成機器語言,最后才能在硬件上運行。與編譯性語言相比,每次多出了編譯和鏈接的過程,性能肯定會受到影響。

2.由于不用關(guān)心程序的編譯和庫的鏈接等問題,開發(fā)的工作也就更加輕松啦。

3.python代碼與機器底層更遠了,python程序更加易于移植,基本上無需改動就能在多平臺上運行。

在具體計算機上實現(xiàn)一種語言,首先要確定的是表示該語言語義解釋的虛擬計算機,一個關(guān)鍵的問題是程序執(zhí)行時的基本表示是實際計算機上的機器語言還是虛擬機的機器語言。這個問題決定了語言的實現(xiàn)。根據(jù)這個問題的回答,可以將程序設(shè)計語言劃分為兩大類:編譯型語言和解釋型語言。

1.編譯實現(xiàn)的語言,如:C、C++、Fortran、Pascal、Ada。由編譯型語言編寫的源程序需要經(jīng)過編譯,匯編和鏈接才能輸出目標(biāo)代碼,然后由機器執(zhí)行目標(biāo)代碼。目標(biāo)代碼是有機器指令組成,不能獨立運行,因為源程序中可能使用了一些匯編程序不能解釋引用的庫函數(shù),而庫函數(shù)又不在源程序中,此時還需要鏈接程序完成外部引用和目標(biāo)模板調(diào)用的鏈接任務(wù),最后才能輸出可執(zhí)行代碼。

2.解釋型語言,解釋器不產(chǎn)生目標(biāo)機器代碼,而是產(chǎn)生中間代碼,這種中間代碼與機器代碼不同,中間代碼的解釋是由軟件支持的,不能直接使用在硬件上。該軟件解釋器通常會導(dǎo)致執(zhí)行效率較低,用解釋型語言編寫的程序是由另一個可以理解中間代碼的解釋程序執(zhí)行的。和編譯的程序不同的是, 解釋程序的任務(wù)是逐一將源代碼的語句解釋成可執(zhí)行的機器指令,不需要將源程序翻譯成目標(biāo)代碼再執(zhí)行。對于解釋型語言,需要一個專門的解釋器來執(zhí)行該程序,每條語句只有在執(zhí)行是才能被翻譯,這種解釋型語言每執(zhí)行一次就翻譯一次,因而效率低下。

3.Java解釋器,java很特殊,java是需要編譯的,但是沒有直接編譯成機器語言,而是編譯成字節(jié)碼,然后在Java虛擬機上用解釋的方式執(zhí)行字節(jié)碼。Python也使用了類似的方式,先將python編譯成python字節(jié)碼,然后由一個專門的python字節(jié)碼解釋器負責(zé)解釋執(zhí)行字節(jié)碼。

4.python是一門解釋語言,但是出于效率的考慮,提供了一種編譯的方法。編譯之后就得到pyc文件,存儲了字節(jié)碼。python這點和java很類似,但是java與python不同的是,python是一個解釋型的語言,所以編譯字節(jié)碼不是一個強制的操作,事實上,編譯是一個自動的過程,一般不會在意它的存在。編譯成字節(jié)碼可以節(jié)省加載模塊的時間,提高效率。

5.除了效率之外,字節(jié)碼的形式也增加了反向工程的難度,可以保護源代碼。這個只是一定程度上的保護,反編譯還是可以的。

相信本文所述對于大家深入理解Python可以起到一定的促進作用。

相關(guān)文章

  • python對比兩個字典dict的差異詳解

    python對比兩個字典dict的差異詳解

    這篇文章主要為大家詳細介紹了python?如何對比兩個字典dict的不同差異,文中的示例代碼簡潔易懂,具有一定的學(xué)習(xí)價值,感興趣的可以了解一下
    2023-05-05
  • Django 靜態(tài)文件配置過程詳解

    Django 靜態(tài)文件配置過程詳解

    這篇文章主要介紹了Django 靜態(tài)文件配置過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • pytorch版本PSEnet訓(xùn)練并部署方式

    pytorch版本PSEnet訓(xùn)練并部署方式

    這篇文章主要介紹了pytorch版本PSEnet訓(xùn)練并部署方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Python中使用platform模塊獲取系統(tǒng)信息的用法教程

    Python中使用platform模塊獲取系統(tǒng)信息的用法教程

    這里我們整理了Python中使用platform模塊獲取系統(tǒng)信息的用法教程,包括操作系統(tǒng)與Python環(huán)境以及系統(tǒng)的環(huán)境變量等信息的獲取方法:
    2016-07-07
  • Django xadmin開啟搜索功能的實現(xiàn)

    Django xadmin開啟搜索功能的實現(xiàn)

    今天小編就為大家分享一篇Django xadmin開啟搜索功能的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python實現(xiàn)去除空格及tab換行符的方法

    python實現(xiàn)去除空格及tab換行符的方法

    這篇文章主要為大家介紹了python實現(xiàn)去除空格及tab換行符的方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • python3中zip()函數(shù)使用詳解

    python3中zip()函數(shù)使用詳解

    zip函數(shù)接受任意多個可迭代對象作為參數(shù),將對象中對應(yīng)的元素打包成一個tuple,然后返回一個可迭代的zip對象.這個可迭代對象可以使用循環(huán)的方式列出其元素,若多個可迭代對象的長度不一致,則所返回的列表與長度最短的可迭代對象相同.
    2018-06-06
  • Python實現(xiàn)自動化發(fā)送郵件

    Python實現(xiàn)自動化發(fā)送郵件

    大家好,本篇文章主要講的是Python實現(xiàn)自動化發(fā)送郵件,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • python 自動軌跡繪制的實例代碼

    python 自動軌跡繪制的實例代碼

    今天小編就為大家分享一篇python 自動軌跡繪制的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python實現(xiàn)某考試系統(tǒng)生成word試卷

    python實現(xiàn)某考試系統(tǒng)生成word試卷

    這篇文章主要為大家詳細介紹了python實現(xiàn)某考試系統(tǒng)生成word試卷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05

最新評論

荣昌县| 竹北市| 临漳县| 休宁县| 玛多县| 西乡县| 曲阳县| 新昌县| 上林县| 青海省| 南陵县| 微山县| 潜江市| 九江县| 莆田市| 锦州市| 鄱阳县| 垦利县| 辽中县| 新巴尔虎右旗| 阆中市| 绥德县| 犍为县| 红原县| 滦南县| 云浮市| 桐庐县| 张北县| 临桂县| 涞水县| 五莲县| 麦盖提县| 南陵县| 疏勒县| 盐城市| 桂林市| 海林市| 长阳| 樟树市| 小金县| 菏泽市|