首頁 > 後端開發 > Python教學 > Python 的 `if __name__ == '__main__':` 語句有什麼作用?

Python 的 `if __name__ == '__main__':` 語句有什麼作用?

Barbara Streisand
發布: 2025-01-01 14:53:14
原創
843 人瀏覽過

What does Python's `if __name__ ==

if __name__ == "__main__": 會做什麼?

__name__ 保護是保護使用者的常見 Python 習慣用法當他們無意時意外調用腳本。如果您將腳本匯入到另一個腳本中或將其序列化為 pickle,則忽略此防護可能會導致意外行為。

它是如何工作的

當解釋器讀取時一個源文件,它做了兩件事:

  • 設定特殊變量,例如__name__
  • 執行檔中找到的代碼

如果將模組作為主程式運行,則__name__ 設定為「__main__」。否則,當您匯入模組時,__name__ 將設定為模組的名稱。

__name__ 防護的工作方式如下:

  • 如果__name__ == '__main__' (main程式):

    • 執行guard body內的程式碼(通常函數)。
  • 如果 __name__ != '__main__' (導入模組):

    • 跳過守衛內的程式碼body.

程式碼範例

讓我們檢查以下程式碼:

print("before import")
import math

print("before function_a")
def function_a():
    print("Function A")

print("before function_b")
def function_b():
    print("Function B {}".format(math.sqrt(100)))

print("before __name__ guard")
if __name__ == '__main__':
    function_a()
    function_b()
print("after __name__ guard")
登入後複製
  • 導入:數學導入時不帶
  • 主程式:如果程式碼作為主程式運行,它將在__name__ 保護中列印「Function A」和「 Function B 10.0」。
  • 導入的模組:如果程式碼作為常規模組導入,則守衛將被跳過,函數不會被執行。

為什麼要用它?

這個習慣用法允許你編寫可以被執行的 .py 檔案既可以用作獨立模組,也可以用作作為主程式運行的腳本。其有用性的一些例子:

  • 具有演示模式的庫:具有用於單元測試或運行演示的腳本模式的庫。
  • 單元測試: 測試框架可能會將.py 檔案作為模組導入,需要__name__ 防護來阻止腳本
  • API暴露:作為獨立程式運行時為進階使用者提供API的模組。
  • 多功能程式碼:它很優雅地透過導入其模組來運行腳本,並且 __name__ 防護有助於此。

到總而言之, if __name__ == '__main__' 保護可以省略,但建議用於多功能性、錯誤保護,並防止匯入或序列化程式碼時出現意外行為。

以上是Python 的 `if __name__ == '__main__':` 語句有什麼作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板