Python在什么時候會生成pyc文件呢士八?

Python在什么時候會生成pyc文件呢?

??事情大概是這樣的琅拌,之前我一直以為python文件在執(zhí)行過之后就會生成pyc文件缨伊,后來一次偶然情況下,發(fā)現(xiàn)還是自己too young too simple,在看過其他大神文章并且自己驗證之后进宝,發(fā)現(xiàn)還是有點意思的刻坊,權(quán)當沒事寫點文章吧。

什么是pyc文件呢党晋?

??簡單來說谭胚,pyc文件就是Python的字節(jié)碼文件,我們都知道Python是一種全平臺的解釋性語言未玻,全平臺其實就是Python文件在經(jīng)過解釋器解釋之后(或者稱為編譯)生成的pyc文件可以在多個平臺下運行漏益,這樣同樣也可以隱藏源代碼。其實深胳,Python是完全面向?qū)ο蟮恼Z言绰疤,Python文件在經(jīng)過解釋器解釋后生成字節(jié)碼對象PyCodeObject,pyc文件可以理解為是PyCodeObject對象的持久化保存方式舞终。

什么時候會生成pyc文件呢轻庆?

??pyc文件只有在文件被當成模塊導(dǎo)入時才會生成。也就是說敛劝,Python解釋器認為余爆,只有import進行的模塊才需要被重用。 生成pyc文件的好處顯而易見夸盟,當我們多次運行程序時蛾方,不需要重新對該模塊進行重新的解釋。主文件一般只需要加載一次不會被其他模塊導(dǎo)入,所以一般主文件不會生成pyc文件桩砰。
??下面來舉個例子說明拓春,見代碼

文件print_hello.py

print("hello")
import print_hello

執(zhí)行python print_hello.py

E:\test>python print_hello.py
hello

E:\test>dir
 驅(qū)動器 E 中的卷是 文件
 卷的序列號是 B612-D1B0

 E:\test 的目錄

2017/09/25  21:09    <DIR>          .
2017/09/25  21:09    <DIR>          ..
2017/09/25  21:08                18 import_hello.py
2017/09/25  21:08                14 print_hello.py
               2 個文件             32 字節(jié)
               2 個目錄 49,367,699,456 可用字節(jié)

可以發(fā)現(xiàn)并沒有pyc文件生成,
執(zhí)行python import_hello.py

E:\test>python import_hello.py
hello

E:\test>dir
 驅(qū)動器 E 中的卷是 文件
 卷的序列號是 B612-D1B0

 E:\test 的目錄

2017/09/25  21:12    <DIR>          .
2017/09/25  21:12    <DIR>          ..
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 字節(jié)
               2 個目錄 49,367,699,456 可用字節(jié)

需要說明兩點的是:

  • 執(zhí)行python import_hello.py亚隅,開始執(zhí)行import print_hello硼莽,導(dǎo)入print_hello模塊,然后執(zhí)行了print_hello模塊里面的代碼煮纵,所以我們可以看到有“hello”輸出懂鸵;
  • 如果不想執(zhí)行里面的代碼,一般可以將代碼封裝在一個類或者函數(shù)里面行疏,然后加個if判斷匆光,類似下面這樣,表示如果是被導(dǎo)入則不執(zhí)行if下的代碼酿联,如果作為程序入口或者腳本執(zhí)行终息,則執(zhí)行if下的代碼。
if __name__ == "__main__":
    print("hello")
pyc文件的過期時間
  • 在生成pyc文件的同時货葬,寫入了一個Long型的變量采幌,用于記錄最近修改的時間;
  • 每次載入之前都先檢查一下py文件和pyc文件的最后修改日期震桶,如果不一致則會生成一個新的pyc文件
總結(jié)

??總的來說休傍,了解pyc其實對于Python開發(fā)者來說并沒有多大的意義,本著鉆研的精神寫下這篇文章蹲姐,感覺有一下幾點可以考慮

  • Python的pyc文件從一定意義上可以減少解釋器解釋Python文件的時間磨取,不必每次都要解釋編譯一遍,方便下次快速加載柴墩,有點類似數(shù)據(jù)庫的緩存吧忙厌;
  • 想想如果我們想設(shè)計一個系統(tǒng),類似主文件這種不會被重用江咳,而其他模塊可能會被重用逢净,我們就需要分開設(shè)計對待了吧;
  • 在設(shè)計緩存系統(tǒng)時候歼指,類似Python這種對比最后修改時間的方式爹土,是不是可以給我們一點啟示呢?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末踩身,一起剝皮案震驚了整個濱河市胀茵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挟阻,老刑警劉巖琼娘,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件峭弟,死亡現(xiàn)場離奇詭異,居然都是意外死亡脱拼,警方通過查閱死者的電腦和手機瞒瘸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挪拟,“玉大人挨务,你說我怎么就攤上這事击你∮褡椋” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵丁侄,是天一觀的道長惯雳。 經(jīng)常有香客問我,道長鸿摇,這世上最難降的妖魔是什么石景? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮拙吉,結(jié)果婚禮上潮孽,老公的妹妹穿的比我還像新娘。我一直安慰自己筷黔,他們只是感情好往史,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著佛舱,像睡著了一般椎例。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上请祖,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天订歪,我揣著相機與錄音,去河邊找鬼肆捕。 笑死刷晋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的慎陵。 我是一名探鬼主播眼虱,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荆姆!你這毒婦竟也來了蒙幻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胆筒,失蹤者是張志新(化名)和其女友劉穎邮破,沒想到半個月后诈豌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡抒和,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年矫渔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摧莽。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡庙洼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出镊辕,到底是詐尸還是另有隱情油够,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布征懈,位于F島的核電站石咬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏卖哎。R本人自食惡果不足惜鬼悠,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望亏娜。 院中可真熱鬧焕窝,春花似錦、人聲如沸维贺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幸缕。三九已至群发,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間发乔,已是汗流浹背熟妓。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留栏尚,地道東北人起愈。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像译仗,于是被迫代替她去往敵國和親抬虽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 本節(jié)內(nèi)容 Python介紹 發(fā)展史 Python 2 or 3? 安裝 Hello World程序 變量 用戶輸入...
    小小不懂11閱讀 3,421評論 2 30
  • 文/Bruce.Liu1 1.Python前世今生 1.1.Python歷史 Python的創(chuàng)始人: Guido ...
    BruceLiu1閱讀 11,809評論 3 120
  • 1. 簡單的例子 先從一個簡單的例子說起年堆,包含了兩個文件 foo.py 和 demo.py 執(zhí)行這個程序pytho...
    jiangmo閱讀 1,706評論 0 5
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項目接著寫寫一名3年工作經(jīng)驗的J...
    燕京博士閱讀 7,575評論 1 118
  • 前言 Python的創(chuàng)始人為Guido van Rossum同规。1989年圣誕節(jié)期間卦羡,在阿姆斯特丹宫患,Guido為了打...
    依依玖玥閱讀 3,569評論 6 37