pyc文件由誰編譯
1. python .pyc是什麼文件
一、什麼是pyc文件?
pyc文件就是py程序編譯後得到的文件,是一種二進制文件。一般是這樣的:
pyc文件經過python解釋器最終會生成機器碼運行。所以pyc文件是可以跨平台部署的,類似Java的.class文件。如果py文件改變,也會重新生成pyc文件。
相關推薦:《Python視頻教程》
二、pyc文件怎麼生成的?
1、被當做模塊調用的時候會自動生成pyc文件。
一般是python腳本被當做模塊被其他腳本文件調用時,就會產生pyc文件,舉個例子:
如果你寫了一個腳本文件image.py是用來生成驗證碼的,如果你在index.py文件中想引用這個腳本的功能,就需要通過import導入image.py文件,然後,如果你運行index.py文件,那就會在image.py文件所在的路徑生成一個image.pyc文件。
2、對於py文件,可以執行下面命令來生成pyc文件。
3、通過代碼來生成pyc文件。
三、為什麼要生成pyc文件?
1、python為了提高運行效率也會進行編譯。
python是解釋型語言,運行的時候需要通過python解釋器編譯,所以先編譯出pyc文件後,可以節省編譯這一步的耗時時間。
2、不想讓源碼泄露。
因為py文件是可以直接看到源碼的,對於一般的商業公司來說,這有點不妙,因為pyc文件可以獨立於py文件,刪除py文件也不會出錯。這就是太好了,只需要編譯成pyc文件再發布出去就好了。
2. PYC是什麼意思
pyc是一種二進制文件,是由py文件經過編譯後,生成的文件,是一種byte code,py文件變成pyc文件後,載入的速度有所提高,而且pyc是一種跨平台的位元組碼,是由python的虛擬機來執行的,這個是類似於JAVA或者.NET的虛擬機的概念。pyc的內容,是跟python的版本相關的,不同版本編譯後的pyc文件是不同的,2.5編譯的pyc文件,2.4版本的python是無法執行的。
不知你的PYC是在何種情境下看到的PYC····
3. Python代碼是編譯執行還是解釋執行
PYTHON是一種解釋型的腳本語言,所以是解釋執行的
4. python解釋器
python解釋器的介紹:
解釋器由一個編譯器和一個虛擬機構成,編譯器負責將源代碼轉換成位元組碼文件,而虛擬機負責執行位元組碼。
所以,解釋型語言其實也有編譯過程,只不過這個編譯過程並不是直接生成目標代碼,而是中間代碼(位元組碼),然後再通過虛擬機來逐行解釋執行位元組碼。
計算機的大腦是CPU, 中文名叫中央處理器,它仍然不能直接處理 Python 語言。CPU 只能直接處理機器指令語言,那是一種由0和1數字組成的語言,這是一種我們人很難直接寫出來的語言。
所以,我們需要一個翻譯,把Python語言翻譯成 計算機CPU 能聽懂的機器指令語言,這樣計算機才能按照 我們的Python程序的要求去做事。.py結尾的文件需要解釋器去運行執行。
執行過程原理:
1.執行 python XX.py 後,將會啟動 Python 的解釋器。
2.python解釋器的編譯器會將.py源文件編譯(解釋)成位元組碼生成PyCodeObject位元組碼對象存放在內存中。
3.python解釋器的虛擬機將執行內存中的位元組碼對象轉化為機器語言,虛擬機與操作系統交互,使機器語言在機器硬體上運行。
4.運行結束後python解釋器則將PyCodeObject寫回到pyc文件中。當python程序第二次運行時,首先程序會在硬碟中尋找pyc文件,如果找到,則直接載入,否則就重復上面的過程。
Python解釋器執行程序的三個階段:
第一步:先啟動python3解釋器。
第二步:Python3解釋器就像一個文本編輯器一樣將文件python3 D: est.py從硬碟讀入內存。
第三步:Python3解釋器解釋執行文件代碼。
只有第三階段才識別python的語法。
5. python怎麼打開pyc文件
關於PyCodeObject和pyc文件:在硬碟上看到的pyc文件,其實PyCodeObject才是Python編譯器真正編譯成的結果。當python程序運行時,編譯的結果是保存在位於內存中的PyCodeObject中,當Python程序運行結束時,Python解釋器則將PyCodeObject寫回到pyc文件中。當python程序第二次運行時,首先程序會在硬碟中尋找pyc文件,如果找到,則直接載入,否則就重復上面的過程。所以,我們可以說pyc文件其實是PyCodeObject的一種持久化保存方式。
你指的是編輯pyc還是導入pyc?
pyc是很難直接編輯的,最好是修改原來的py文件,再生產pyc。
導入pyc:假設你的源代碼文件是model.py,經過Python37解釋器運行後會自動生成modle.cpython-37.pyc。如果要在main.py中導入modle.cpython-37.pyc,需要把文件名中的cpython-37去掉,變成model.pyc,再放到main.py所在的文件夾里,在main.py中添加「import model」,即可導入model。
6. pyc鏄浠涔堟剰鎬
pyc鏄浠涔堟剰鎬濓紵
1. pyc鐨勫畾涔夊拰姒傝堪
pyc鏄疨ython緙栬瘧鍣ㄥ皢婧愪唬鐮佺紪璇戠敓鎴愮殑涓闂存枃浠剁殑鏍煎紡錛屽叾涓昏佷綔鐢ㄦ槸鎻愰珮紼嬪簭鐨勮繍琛屾晥鐜囥
Python鏄涓縐嶈В閲婂瀷璇璦錛屽叾浠g爜闇瑕佽瑙i噴鍣ㄩ愯岃В閲婃墽琛屻傝岀紪璇戝瀷璇璦鍒欐槸灝嗘簮浠g爜緙栬瘧鐢熸垚鏈哄櫒鐮侊紝鐩存帴鍦–PU涓婅繍琛屻備負浜嗘彁楂楶ython鑴氭湰鐨勬墽琛屾晥鐜囷紝Python鍦ㄨВ閲婃墽琛岀殑鍩虹涓婏紝榪樻彁渚涗簡灝嗘簮浠g爜緙栬瘧涓簆yc鏂囦歡鐨勫姛鑳姐
2. pyc鏂囦歡鐨勭敓鎴愬拰浣滅敤
褰揚ython瑙i噴鍣ㄦ墽琛屼竴涓狿ython鑴氭湰鏃訛紝瀹冧細棣栧厛媯鏌ユ槸鍚﹀瓨鍦ㄥ瑰簲鐨刾yc鏂囦歡銆傚傛灉瀛樺湪涓旀渶鍚庝慨鏀規椂闂翠笌鐩稿簲鐨勬簮鏂囦歡涓鑷達紝瑙i噴鍣ㄤ細鑷鍔ㄥ姞杞絧yc鏂囦歡錛屼粠鑰屽姞蹇鑴氭湰鐨勬墽琛岄熷害銆傚傛灉涓嶅瓨鍦ㄥ瑰簲鐨刾yc鏂囦歡鎴杙yc鏂囦歡宸茬粡榪囨湡錛屽垯浼氶噸鏂扮敓鎴愩
鐢變簬pyc鏂囦歡鏄緙栬瘧鍚庣殑涓闂存枃浠訛紝鍏惰繍琛岄熷害姣擯ython婧愪唬鐮佽佸揩錛屽洜姝ゅ彲浠ユ彁楂楶ython紼嬪簭鐨勬墽琛屾晥鐜囥
3. pyc鏂囦歡鐨勭己鐐瑰拰娉ㄦ剰浜嬮」
灝界pyc鏂囦歡鍙浠ユ彁楂楶ython鑴氭湰鐨勬墽琛屾晥鐜囷紝浣嗘槸涔熷瓨鍦ㄧ潃涓浜涚己鐐瑰拰娉ㄦ剰浜嬮」錛
pyc鏂囦歡鍙鏈夊湪鐩稿悓鐨勬搷浣滅郴緇熷拰Python鐗堟湰闂存槸鍙鍏煎圭殑錛屽逛簬涓嶅悓鐨勬搷浣滅郴緇熷拰Python鐗堟湰錛岄渶瑕侀噸鏂扮敓鎴恜yc鏂囦歡銆
pyc鏂囦歡鉶界劧鍙浠ュ炲姞Python紼嬪簭鐨勮繍琛岄熷害錛屼絾鏄涔熶細瀵艱嚧鍗犵敤鏇村氱殑紓佺洏絀洪棿銆
pyc鏂囦歡鍙鑳戒細娉勯湶Python婧愪唬鐮佺殑淇℃伅錛屽洜姝ゅ湪鍙戝竷Python紼嬪簭鏃墮渶瑕佹敞鎰忋
4. 濡備綍紱佺敤pyc鏂囦歡鐨勭敓鎴愬拰鍔犺澆
鍦ㄦ煇浜涙儏鍐典笅錛屾垜浠鍙鑳介渶瑕佺佺敤pyc鏂囦歡鐨勭敓鎴愬拰鍔犺澆銆備緥濡傦紝褰撶▼搴忎腑鐨勪竴浜涙ā鍧椾細鍔ㄦ佷慨鏀規椂錛岄噸鏂板姞杞絧yc鏂囦歡鍙鑳戒細瀵艱嚧紼嬪簭鍑虹幇寮傚父銆
鍙浠ラ氳繃璁劇疆Python鐨勭幆澧冨彉閲忔潵瀹炵幇紱佺敤pyc鏂囦歡鐨勭敓鎴愬拰鍔犺澆銆
紱佺敤pyc鏂囦歡鐨勭敓鎴愩傚湪Python瑙i噴鍣ㄥ惎鍔ㄦ椂錛岃劇疆PYTHONNOUSERSITE鐜澧冨彉閲忕殑鍊間負1銆
紱佺敤pyc鏂囦歡鐨勫姞杞姐傚湪Python瑙i噴鍣ㄥ惎鍔ㄦ椂錛岃劇疆PYTHONDONTWRITEBYTECODE鐜澧冨彉閲忕殑鍊間負1銆
5. 鎬葷粨
pyc鏂囦歡鏄疨ython緙栬瘧鍣ㄥ皢婧愪唬鐮佺紪璇戠敓鎴愮殑涓闂存枃浠剁殑鏍煎紡錛屽叾涓昏佷綔鐢ㄦ槸鎻愰珮紼嬪簭鐨勮繍琛屾晥鐜囥備笉榪囷紝pyc鏂囦歡涔熷瓨鍦ㄤ竴浜涚己鐐瑰拰娉ㄦ剰浜嬮」錛屼緥濡備笉鍚岀殑鎿嶄綔緋葷粺鍜孭ython鐗堟湰闂翠笉鍏煎癸紝鍗犵敤鏇村氱殑紓佺洏絀洪棿絳夈傚傛灉闇瑕佺佺敤pyc鏂囦歡鐨勭敓鎴愬拰鍔犺澆錛屽彲浠ラ氳繃璁劇疆Python鐨勭幆澧冨彉閲忔潵瀹炵幇銆
7. 什麼是pyc文件
pyc文件就是 Python 程序編譯後得到的位元組碼文件 (py->pyc).
pyc文件一般由3個部分組成:
最開始4個位元組是一個Maigc int, 標識此pyc的版本信息, 不同的版本的 Magic 都在 Python/import.c 內定義
接下來四個位元組還是個int,是pyc產生的時間(1970.01.01到產生pyc時候的秒數)
接下來是個序列化了的 PyCodeObject(此結構在 Include/code.h 內定義),序列化方法在 Python/marshal.c 內定義
8. python文件後綴名是什麼
Python程序的擴展名有.py、.pyc、.pyo和.pyd。.py是源文件,.pyc是源文件編譯後的文件,.pyo是源文件優化編譯後的文件,.pyd是其他語言寫的Python庫。
在寫Python程序時我們常見的擴展名是py,pyc,其實還有其他幾種擴展名。以下是詳細內容介紹:
py:py就是最基本的源碼擴展名。Windows下直接雙擊運行會調用Python.exe執行。
pyw:pyw是另一種源碼擴展名,跟py唯一的區別是在Windows下雙擊pyw擴展名的源碼會調用Pythonw.exe執行源碼,這種執行方式不會有命令行窗口。主要用於GUI程序發布時不需要看到控制台信息的情況。
pyc:在執行Python代碼時經常會看到同目錄下自動生成同名的pyc文件。這是Python源碼編譯後的位元組碼,一般會在代碼執行時自動生成你代碼中引用的py文件的pyc文件。這個文件可以直接執行,用文本編輯器打開也看不到源碼。
pyo:pyo是跟pyc類似的優化編碼後的文件。
pyd:pyd並非從Python程序生成,而是其他語言寫成的可以被Python調用的擴展。