python中的if __name__ == 'main'


當你打開一個.py文件時,經常會在代碼的最下面看到if __name__ == '__main__':,現在就來介 紹一下它的作用:

對於編程語言來說,程序都必須要有一個入口,比如java和c#必須要有一個包含main方法的主類來作為程序的入口
而python則不同,它屬於腳本語言,它是從腳本的第一行開始執行,沒有統一的入口。

一個python的文件有兩種使用的方法,第一是直接作為腳本執行,第二是import到其他的python腳本中被調用(模塊重用)執行。
if __name__ == '__main__' 就相當於是 Python 模擬的程序入口,由於模塊之間相互引用,不同模塊可能都有這樣的定義,而入口程序只能有一個。到底哪個入口程序被選中,這取決於 __name__ 的值。

__name__ 是內置變量,用於表示當前模塊的名字,如果一個模塊被直接運行,其 __name__ 值為 __main__。

if __name__ == 'main': 的作用就是控制這兩種情況執行代碼的過程,在if __name__ == 'main': 下的代碼只有在第一種情況下(即文件作為腳本直接執行)才會被執行,而import到其他腳本中是不會被執行的。

舉個例子,下面在test.py中寫入如下代碼:

print   "I am  the first"
if  __name__=="__main__":
    print  "I am  the  second"

直接執行test.py 會打印兩行 :

I am  the first
I am  the  second

 然后在同一文件夾新建名稱為import_test.py的腳本,只輸入如代碼:

import  test

 執行 import_test.py ,只打印一行 “I am  the first”,說明 if __name=="__main__":后面的代碼沒有執行

我們在test.py腳本的if __name__=="__main__":之前加入print __name__,即將__name__打印出來。文件內容和結果如下

 

print   "I am  the first"
print   __name__
if  __name__=="__main__":
    print  "I am  the  second"
I am  the first
__main__
I am  the  second

 可以看出,此時變量__name__的值為"__main__";

 再執行import_test.py,模塊內容和執行結果如下

I am  the first
test

 此時,test.py中的__name__變量值為test,不滿足__name__=="__main__"的條件,因此,無法執行其后的代碼。

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM