麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > python之什么是字節碼(bytecode)?

python之什么是字節碼(bytecode)?

來源:千鋒教育
發布人:xqq
時間: 2023-11-06 23:56:43 1699286203

簡單的說它就是一個從源代碼編譯而來的中間文件(用于不同操作系統平臺的解釋器執行)。比如,a說日語,b說中文,溝通起來不暢通,請一個翻譯,把a和b的語言都翻譯成英語,這個英語就可以理解成bytecode,一種中間語言。

bytecode的好處就是加載快,而且可以跨平臺,同樣一份bytecode,只要有操作系統平臺上有相應的Python解釋器,就可以執行,而不需要源代碼。不同版本的Python編譯的字節碼是不兼容的,Python2.6編譯的bytecode拿到Python2.7上去執行就不行了。

如何生成字節碼?

Python解釋器一般會自動把.py文件轉換成bytecode,然后再執行它。當你第一次把.py文件當作module導入,或者對應的.py文件比.pyc文件的修改時間還要新時,Python解釋器都會再從sourcecode生成相應的新bytecode。這樣當你下次再次運行程序時,就會直接從bytecode運行,從而節省便宜時間。

Ps:這里需要注意,有些情況bytecode并不會生成:

遇到目錄寫權限的問題時。(比如你編寫代碼和運行代碼使用的具有不同權限的用戶角色,Linux上很常見)

運行一個script并不會被當成是import操作,所以可能也不會生成bytecode。(比如:你有個一個a.py的文件,其中在a.py里,你import了b.py,那么運行pythona.py后,會生成b.pyc,而不會生成a.pyc)

.pyc文件是什么?

Python源碼編譯的結果就是PyCodeObject,每個作用域會編譯出一個對應的代碼對象,其中名為co_code的PyStringObject保存著代碼對象的字節碼。

一個Python源文件就是一個模塊。每個模塊頂層的代碼對象通過marshal序列化之后就得到了.pyc文件。marshal以little-endian字節序來序列化數據。

那嵌套于頂層作用域里面的那些作用域,例如函數、類的定義,它們對應的代碼對象在哪里?它們每一個都乖乖的躺在上一層作用域的代碼對象的co_const(常量池)域里,所以其實頂層代碼對象已經嵌套包含了底下其它作用域的代碼對象。

如何對.pyc文件文件進行反編譯?

python文件如果要發布的話,有時候還是難免想保護一下自己的源碼,有些人就直接編譯成了pyc文件,因為這樣既可以保留跨平臺的特性,又可以不能直接看到代碼,也看到網上很多人說為了保護自己的代碼可以編譯成pyc文件。

用pyc文件可以保護python代碼的想法其實是不正確的,pyc文件是可以很容易被反編譯的,比如說比較著名的uncompyle6庫(https://github.com/rocky/python-uncompyle6),用來反編譯文件最爽不過了,幾乎支持python全版本的pyc文件的反編譯。

為什么要做代碼分析?

一般來說,代碼分析重要性的判斷比較主觀,不同的人有不同的認識。Python是用C來實現的,所以對于Python的性能或代碼質量的評估可以通過dis模塊獲取到對應的字節碼指令來進行評估。

一般來說一個Python語句會對應若干字節碼指令,Python的字節碼是一種類似匯編指令的中間語言,但是一個字節碼指令并不是對應一個機器指令(二進制指令),而是對應一段C代碼,而不同的指令的性能不同,所以不能單獨通過指令數量來判斷代碼的性能,而是要通過查看調用比較頻繁的指令的代碼來確認一段程序的性能。

一個Python的程序會有若干代碼塊組成,例如一個Python文件會是一個代碼塊,一個類,一個函數都是一個代碼塊,一個代碼塊會對應一個運行的上下文環境以及一系列的字節碼指令。

dis模塊主要是用來分析字節碼的一個內置模塊。dis模塊的文檔可以讓你遍歷它的內容,并且提供一個字節碼指令能夠做什么和有什么樣的參數的完整清單。

以上內容為大家介紹了python之什么是字節碼(bytecode)?希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.dietsnews.net/

tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 中文字幕在线高清| 天堂mv免费mv在线mv观看| 国产人妖系列在线精品| 久久国产视频网| 国产精品自产拍在线观看| 女人爽小雪又嫩又紧| 欧美超清videos1080p| 蜜柚视频影院在线播放| eeuss影院www在线观看免费| 日本人与黑人videos系列| 印度精品性hd高清| 大香线一本| 国外成人免费高清激情视频| 亚洲国产精品一区二区久久| 波多野结衣一区二区三区88| 老师的胸又大又软真好吃| 国产一区二区福利| 经典三级完整版电影在线观看| 免费看黄色a级片| 太深太粗太爽太猛了视频| 国漫永生第二季在线观看| 亚洲国产欧美日韩精品一区二区三区| 波多野结衣和乡下公在线观看 | 亚洲香蕉免费有线视频| 麻豆波多野结衣| 把胡萝卜立着自己坐上去| 亚洲精品动漫在线| 黄色一级大片| 欧美日韩精品| 男人的好在线观看免费视频| 永久毛片| 国产成人精品亚洲一区| 抱着cao才爽| 亚洲女初尝黑人巨高清| 好爽好黄的视频| 全彩里番acg里番| 男男污污视频| 福利一区二区三区视频在线观看| 国产精品午夜电影| 果冻传媒李琼母亲| 夜夜爽免费888视频|