python筆記:清楚理解判斷語句if __name__ == "__main__"
阿新 • • 發佈:2018-12-20
if __name__ == "__main__":應該怎麼樣理解呢?
stackoverfolow社群活動參考答案在這裡。由 Mr Fooz在2009-1-17回答:
首先,什麼是 __name__?
__name__是一個DunderAlisa。在module層面,定義全域性變數(一個.py被稱為一個module),功能和globle類似。
- 在module下直接執行(這時module被稱作 main module),無論module名字是什麼,print(__name__) 結果都為 “__main__”(即module名字都被賦值為字串__main__)。
# 無論是 a.py、b.py…… >>> print(__name__) __main__ >>>
- 從一個module, 比如把a.py 匯入到另一個module b.py,則結果為另一個module的名稱 a。
# a.py內容是
def name():
print(__name__)
# b.py內容是
>>> import a
>>> a.name()
a
>>>
- 以上均為預設狀態,當然,手動改變__name__屬性,一切似乎都"熟悉"了:
>>> __name__ = 'holiday' # 手動改變預設屬性 >>> if __name__ == 'holiday': print(__name__) >>> else: print('not holiday') holiday >>>
然後,就能容易的理解 if __name__ == "__main__": 的作用:
我們現在知道了,預設情況下__name__ 要不取值 "__main__",要不取值所用的module/modules的名字。
此刻,很明顯我們能看出__name__ 本質是一個變數,可以取值"__main__"或者"名字":
# a.py內容是
def name():
print(__name__)
# b.py內容是 import a def name(): print(__name__) >>> if __name__ == '__main__': name() __main__ >>> if __name__ == 'a': name() a >>>