天天看點

python筆記:清楚了解判斷語句if __name__ == "__main__"if __name__ == "__main__":應該怎麼樣了解呢?

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
>>>