Python在什麼時候會生成pyc檔案呢?

2021-09-14 06:35:11 字數 1755 閱讀 5745

事情大概是這樣的,之前我一直以為python檔案在執行過之後就會生成pyc檔案,後來一次偶然情況下,發現還是自己too young too ******,在看過其他大神文章並且自己驗證之後,發現還是有點意思的,權當沒事寫點文章吧。

什麼是pyc檔案呢?

簡單來說,pyc檔案就是python的位元組碼檔案,我們都知道python是一種全平台的解釋性語言,全平台其實就是python檔案在經過直譯器解釋之後(或者稱為編譯)生成的pyc檔案可以在多個平台下執行,這樣同樣也可以隱藏源**。其實,python是完全物件導向的語言,python檔案在經過直譯器解釋後生成位元組碼物件pycodeobject,pyc檔案可以理解為是pycodeobject物件的持久化儲存方式。

什麼時候會生成pyc檔案呢?

pyc檔案只有在檔案被當成模組匯入時才會生成。也就是說,python直譯器認為,只有import進行的模組才需要被重用。 生成pyc檔案的好處顯而易見,當我們多次執行程式時,不需要重新對該模組進行重新的解釋。主檔案一般只需要載入一次不會被其他模組匯入,所以一般主檔案不會生成pyc檔案。

下面來舉個例子說明,見**

檔案print_hello.py

print("hello")

import print_hello
執行python print_hello.py

e:\test>python print_hello.py

hello

e:\test>dir

驅動器 e 中的卷是 檔案

卷的序列號是 b612-d1b0

e:\test 的目錄

2017/09/25 21:09 .

2017/09/25 21:09 ..

2017/09/25 21:08 18 import_hello.py

2017/09/25 21:08 14 print_hello.py

2 個檔案 32 位元組

2 個目錄 49,367,699,456 可用位元組

可以發現並沒有pyc檔案生成,

執行python import_hello.py

e:\test>python import_hello.py

hello

e:\test>dir

驅動器 e 中的卷是 檔案

卷的序列號是 b612-d1b0

e:\test 的目錄

2017/09/25 21:12 .

2017/09/25 21:12 ..

2017/09/25 21:08 18 import_hello.py

2017/09/25 21:08 14 print_hello.py

2017/09/25 21:12 124 print_hello.pyc

3 個檔案 156 位元組

2 個目錄 49,367,699,456 可用位元組

需要說明兩點的是:

if __name__ == "__main__":

print("hello")

pyc檔案的過期時間

總結總的來說,了解pyc其實對於python開發者來說並沒有多大的意義,本著鑽研的精神寫下這篇文章,感覺有一下幾點可以考慮

在Ajax中什麼時候用GET什麼時候用POST?

當我們有大量資料要傳送時最好的辦法是一次發出多個只傳遞少量資訊的ajax呼叫時。如果你正用乙個ajax呼叫傳送大量資料,那麼最好是結束這種做法,因為這樣做並不能節約時間。因此,需要傳送大量資料能成為我們在get和post之間猶豫不決的理由嗎?這兩個方法都是為不同的目的而設計的,兩者的不同也在於其使用...

在c 中, 什麼時候用 什麼時候用

在某種意義上,和 是意思相對的兩個東西,把它們放在一起有什麼意義呢?為了理解指標的這種做法,我們先複習一下c c 程式設計中無所不在的指標概念。我們都知道myclass 的意思 指向某個物件的指標,此物件的型別為myclass。void func1 myclass pmyclass 例如 mycla...

layoutSubviews在什麼時候被呼叫

layoutsubviews在以下情況下會被呼叫 1 init初始化不會觸發layoutsubviews 2 addsubview會觸發layoutsubviews 3 設定view的frame會觸發layoutsubviews,當然前提是frame的值設定前後發生了變化 4 滾動乙個uiscrol...