91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pyhton中__pycache__文件夾的產生與作用詳解

發布時間:2020-08-29 12:01:55 來源:腳本之家 閱讀:184 作者:殘劍 欄目:開發技術

用python編寫了一個工程,但在第一次運行后,發現工程根目錄下生成了一個__pycache__文件夾,里面是和py文件同名的各種以.cpython-35.pyc結尾的文件。cpython-35各項意義,cpython代表的是c語言實現的Python解釋器,-35代表的是3.5版本。至于pyc,需要先了解一下模塊的調用。

模塊的調用

Python導入模塊時,實際上會把被導入的模塊執行一遍。例如調用test.py模塊:

def haha():
  print("haha")

haha()

主程序main.py:

import test

print("good")

執行結果:

haha
good

如何才能只是單純調用而不執行被調用模塊的代碼呢?要想被調用模塊代碼不被執行,可以使用__name__。如果不涉及模塊導入,__name__的值就是__main__,如果模塊被導入引用的話,那么這個模塊內的__name__值就是文件的名字(不帶.py),例如test.py:

def haha():
  print("haha")

haha()
print(__name__)

執行結果為:

haha
__main__

如果test被導入引用的話,例如test2:

import test

print("good")

運行結果為:

haha
test
good

在被調用的模塊中,可執行代碼前加上if __name__ == '__main__':這么一句判斷,被調用的模塊的代碼就不會被執行。

由來

Python程序運行時不需要編譯成二進制代碼,而直接從源碼運行程序。簡單來說是,Python解釋器將源碼轉換為字節碼,然后再由解釋器來執行這些字節碼。

解釋器的具體工作:

1、完成模塊的加載和鏈接;
2、將源代碼編譯為PyCodeObject對象(即字節碼),寫入內存中,供CPU讀取;
3、從內存中讀取并執行,結束后將PyCodeObject寫回硬盤當中,也就是復制到.pyc或.pyo文件中,以保存當前目錄下所有腳本的字節碼文件。

之后若再次執行該腳本,它先檢查【本地是否有上述字節碼文件】和【該字節碼文件的修改時間是否在其源文件之后】,是就直接執行,否則重復上述步驟。

第一次執行代碼的時候,Python解釋器已經把編譯的字節碼放在__pycache__文件夾中,這樣以后再次運行的話,如果被調用的模塊未發生改變,那就直接跳過編譯這一步,直接去__pycache__文件夾中去運行相關的*.pyc文件,大大縮短了項目運行前的準備時間。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴仁县| 农安县| 库伦旗| 北流市| 沙田区| 湟源县| 宜春市| 松原市| 云龙县| 凤阳县| 丘北县| 郓城县| 河西区| 灌南县| 黄平县| 房产| 通化县| 临颍县| 旺苍县| 台南市| 凌源市| 青冈县| 金溪县| 连云港市| 延寿县| 盱眙县| 外汇| 洪江市| 邹城市| 澄迈县| 嘉鱼县| 永修县| 锡林浩特市| 永登县| 黄平县| 平顺县| 岗巴县| 肇州县| 南部县| 河北区| 宁都县|