一個.py檔案被其他.py檔案引用

假設我們有一個const.py檔案,內容如下:
PI = 3.14

def main():
    print("PI:", PI)

main()

# 執行結果:PI: 3.14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

現在,我們寫一個用於計算圓面積的area.py檔案,area.py檔案需要用到const.py檔案中的PI變數。從const.py中,我們把PI變數匯入area.py:

from const import PI

def calc_round_area(radius):
    return PI * (radius ** 2)

def main():
    print("round area: ", calc_round_area(2))

main()

'''
執行結果:
PI: 3.14
round area:  12.56
'''

修改const.py,新增if __name__ == "__main__"

我們看到const.py中的main函式也被運行了,實際上我們不希望它被執行,因為const.py提供的main函式只是為了測試常量定義。這時if __name__ == '__main__'派上了用場,我們把const.py改一下,新增if __name__ == "__main__"

PI = 3.14

def main():
    print("PI:", PI)

if __name__ == "__main__":
    main()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

執行const.py,輸出如下:

PI: 3.14
  • 1

執行area.py,輸出如下:

round area:  12.56
  • 1

如上,我們可以看到if __name__ == '__main__'相當於Python模擬的程式入口,Python本身並沒有這麼規定,這只是一種編碼習慣。由於模組之間相互引用,不同模組可能有這樣的定義,而程式入口只有一個。到底哪個程式入口被選中,這取決於__name__的值。