轉自:https://blog.csdn.net/u011511601/article/details/53504355
Python使用縮進對齊組織代碼的執行,所有沒有縮進的代碼,都會在載入時自動執行。每個文件(模塊)都可以任意寫一些沒有縮進的代碼,並在載入時自動執行。為了區分 主執行代碼和被調用文件,Python引入了變量:__name__。
1)當文件是被調用時,__name__的值為模塊名;
2)當文件被執行時,__name__的值為 ‘__main__’。
基於此特性,為測試驅動開發提供了很好的支持,我們可以在每個模塊中寫上測試代碼,這些測試代碼僅當模塊被Python直接執行時才會運行,代碼和測試完美的結合在一起。
典型的Python文件結構
Python中的__name__舉例

#hello.py def sayHello(): str="hello" print(str); if __name__ == "__main__": print ('This is main of module "hello.py"') sayHello()
python作為一種腳本語言,我們用python寫的各個module都可以包含以上那么一個類似c中的main函數,只不過python中的這種__main__與c中有一些區別,主要體現在:
1、當單獨執行該module時,比如單獨執行以上hello.py: python hello.py,則輸出

This is main of module "hello.py" hello
可以理解為"if __name__=="__main__":" 這一句與c中的main()函數所表述的是一致的,即作為入口;
2、當該module被其它module 引入使用時,其中的"if __name__=="__main__":"所表示的Block不會被執行,這是因為此時module被其它module引用時,其__name__的值將發生變化,__name__的值將會是module的名字。比如在python shell中import hello后,查看hello.__name__:

>>> import hello >>> hello.__name__ 'hello' >>>
3、因此,在python中,當一個module作為整體被執行時,moduel.__name__的值將是"__main__";而當一個module被其它module引用時,module.__name__將是module自己的名字,當然一個module被其它module引用時,其本身並不需要一個可執行的入口main了。