Python中的模塊(.py文件)在創建之初會自動加載一些內建變量,__name__就是其中之一。Python模塊中通常會定義很多變量和函數,這些變量和函數相當於模塊中的一個功能,模塊被導入到別的文件中,可以調用這些變量和函數。那么這時 __name__ 的作用就彰顯了,它可以標識模塊的名字,可以顯示一個模塊的某功能是被自己執行還是被別的文件調用執行,假設模塊A、B,模塊A自己定義了功能C,模塊B調用模塊A,現在功能C被執行了:
如果C被A自己執行,也就是說模塊執行了自己定義的功能,那么 __name__=='__main__'
如果C被B調用執行,也就是說當前模塊調用執行了別的模塊的功能,那么__name__=='A'(被調用模塊的名字)
其實換一種說法也就是表示當前程序運行在哪一個模塊中
下面舉例說明:
首先自定義模塊Student,在模塊中定義功能Differ()
然后先自身執行,結果如下, __name__=='__main__'
然后B調用執行,結果 __name__=='Student'
上面出兩次結果,是因為python中導入模塊會先將文件執行一遍,如下圖
到這兒可能有人已經注意到,上面的 __main__ 在python中作可以為函數的入口,而實際工程常用 if __name__=='__main__'來表示整個工程開始運行的入口。
此外你如果不想讓功能的某部分被別的模塊調用執行,比如我自定的模塊Student里的‘我的密碼是xxx’,只有自己執行才可以打印密碼。所有你可以把部分寫在if語句里,只有__name__=='__main__'的時候才能執行。這個可以這么理解,在if語句之外代碼是最外層的,有點“全局變量”的意思,放入if里面就成了私有的了
摘自:https://blog.csdn.net/xmp1669217327/article/details/81382174