python中的if __name__ == 'main'

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

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

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

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

if __name__ == 'main': 的做用就是控制這兩種狀況執行代碼的過程,在if __name__ == 'main': 下的代碼只有在第一種狀況下(即文件做爲腳本直接執行)纔會被執行,而import到其餘腳本中是不會被執行的。編程語言

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

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

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

I am  the first
I am  the  second

 而後在同一文件夾新建名稱爲import_test.py的腳本,只輸入如代碼:class

import  test

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

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

 

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__"的條件,所以,沒法執行其後的代碼。

相關文章
相關標籤/搜索