1. 程式人生 > >python筆記:清楚理解判斷語句if __name__ == "__main__"

python筆記:清楚理解判斷語句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
>>>