1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢(xún)
      選擇下列產(chǎn)品馬上在線(xiàn)溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      python編譯過(guò)程和執(zhí)行原理是什么

      這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)python編譯過(guò)程和執(zhí)行原理是什么,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

      成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括細(xì)河網(wǎng)站建設(shè)、細(xì)河網(wǎng)站制作、細(xì)河網(wǎng)頁(yè)制作以及細(xì)河網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,細(xì)河網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到細(xì)河省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!

      python編譯過(guò)程和執(zhí)行原理

      (1)python執(zhí)行原理

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

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

      對(duì)于python解釋語(yǔ)言,有以下3方面的特性:

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

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

      python代碼與機(jī)器底層更遠(yuǎn)了,python程序更加易于移植,基本上無(wú)需改動(dòng)就能在多平臺(tái)上運(yùn)行。

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

      編譯實(shí)現(xiàn)的語(yǔ)言,如:C、C++、Fortran、Pascal、Ada。由編譯型語(yǔ)言編寫(xiě)的源程序需要經(jīng)過(guò)編譯,匯編和鏈接才能輸出目標(biāo)代碼,然后由機(jī)器執(zhí)行目標(biāo)代碼。目標(biāo)代碼是有機(jī)器指令組成,不能獨(dú)立運(yùn)行,因?yàn)樵闯绦蛑锌赡苁褂昧艘恍﹨R編程序不能解釋引用的庫(kù)函數(shù),而庫(kù)函數(shù)又不在源程序中,此時(shí)還需要鏈接程序完成外部引用和目標(biāo)模板調(diào)用的鏈接任務(wù),最后才能輸出可執(zhí)行代碼。

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

      Java解釋器,java很特殊,java是需要編譯的,但是沒(méi)有直接編譯成機(jī)器語(yǔ)言,而是編譯成字節(jié)碼,然后在Java虛擬機(jī)上用解釋的方式執(zhí)行字節(jié)碼。Python也使用了類(lèi)似的方式,先將python編譯成python字節(jié)碼,然后由一個(gè)專(zhuān)門(mén)的python字節(jié)碼解釋器負(fù)責(zé)解釋執(zhí)行字節(jié)碼。

       python是一門(mén)解釋語(yǔ)言,但是出于效率的考慮,提供了一種編譯的方法。編譯之后就得到pyc文件,存儲(chǔ)了字節(jié)碼。python這點(diǎn)和java很類(lèi)似,但是java與python不同的是,python是一個(gè)解釋型的語(yǔ)言,所以編譯字節(jié)碼不是一個(gè)強(qiáng)制的操作,事實(shí)上,編譯是一個(gè)自動(dòng)的過(guò)程,一般不會(huì)在意它的存在。編譯成字節(jié)碼可以節(jié)省加載模塊的時(shí)間,提高效率。

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

      (2)Python內(nèi)部執(zhí)行過(guò)程

      一、編譯過(guò)程概述

      當(dāng)我們執(zhí)行Python代碼的時(shí)候,在Python解釋器用四個(gè)過(guò)程“拆解”我們的代碼,最終被CPU執(zhí)行返回給用戶(hù)。

      首先當(dāng)用戶(hù)鍵入代碼交給Python處理的時(shí)候會(huì)先進(jìn)行詞法分析,例如用戶(hù)鍵入關(guān)鍵字或者當(dāng)輸入關(guān)鍵字有誤時(shí),都會(huì)被詞法分析所觸發(fā),不正確的代碼將不會(huì)被執(zhí)行。

      下一步Python會(huì)進(jìn)行語(yǔ)法分析,例如當(dāng)"for i in test:"中,test后面的冒號(hào)如果被寫(xiě)為其他符號(hào),代碼依舊不會(huì)被執(zhí)行。

      下面進(jìn)入最關(guān)鍵的過(guò)程,在執(zhí)行Python前,Python會(huì)生成.pyc文件,這個(gè)文件就是字節(jié)碼,如果我們不小心修改了字節(jié)碼,Python下次重新編譯該程序時(shí)會(huì)和其上次生成的字節(jié)碼文件進(jìn)行比較,如果不匹配則會(huì)將被修改過(guò)的字節(jié)碼文件進(jìn)行覆蓋,以確保每次編譯后字節(jié)碼的準(zhǔn)確性。

      那么什么是字節(jié)碼?字節(jié)碼在Python虛擬機(jī)程序里對(duì)應(yīng)的是PyCodeObject對(duì)象。.pyc文件是字節(jié)碼在磁盤(pán)上的表現(xiàn)形式。簡(jiǎn)單來(lái)說(shuō)就是在編譯代碼的過(guò)程中,首先會(huì)將代碼中的函數(shù)、類(lèi)等對(duì)象分類(lèi)處理,然后生成字節(jié)碼文件。有了字節(jié)碼文件,CPU可以直接識(shí)別字節(jié)碼文件進(jìn)行處理,接著Python就可執(zhí)行了。

      上述就是小編為大家分享的python編譯過(guò)程和執(zhí)行原理是什么了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


      本文題目:python編譯過(guò)程和執(zhí)行原理是什么
      標(biāo)題來(lái)源:http://www.ef60e0e.cn/article/gieceh.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        永川市| 阳城县| 张家界市| 通山县| 方城县| 锡林郭勒盟| 雅安市| 苏尼特右旗| 略阳县| 包头市| 乌鲁木齐县| 昌吉市| 桓台县| 芮城县| 大冶市| 宝清县| 烟台市| 德惠市| 株洲市| 南川市| 永修县| 青冈县| 吉首市| 墨竹工卡县| 措美县| 邵阳县| 许昌县| 石台县| 伊川县| 嘉黎县| 南城县| 丹寨县| 乡城县| 泸定县| 汉川市| 封开县| 当阳市| 丰顺县| 西藏| 绥中县| 云浮市|