你可能在 Python 腳本中經常看到這樣的程式碼 if __name__=="__main__": ,但不知道它的實際用途是什麼。別擔心,因為在這篇簡短的部落格中我們將討論這個
當你直接執行程式或腳本時,Python會自動將「main」指派給特殊的name變數。這樣做基本上是為了表明該文件是此處的“主”腳本,並且正在直接運行而不是導入到另一個腳本中。
要理解這一點,請建立一個新的 Python 腳本,假設將其命名為「example.py」並寫入:
print("Name of Script: ", __name__)
執行此命令,您將看到輸出 Name of Script: __main__。這只是因為該文件正在直接運行。
現在,建立另一個 python 腳本檔案並將 example.py 匯入到此檔案中。運行它,您將看到不同的結果,顯示“腳本名稱:範例”。這只是因為現在我們不是直接運行它,而是導入腳本並間接運行它。因此,Python 現在顯示檔案的實際名稱。
讓我們對範例文件進行一些更改,以便我們可以更好地理解它。
def s_name(): print("Name of Script: ", __name__) s_name() def greet(): print("Hello! How are you doing?") if __name__=="__main__": greet()
現在,如果您直接執行此命令,所有內容都將完美執行,但如果您執行導入 example.py 腳本的其他文件,您會注意到greet 函數呼叫未執行。這是為什麼?
這是因為 if 條件。條件的作用是檢查檔案是否正在直接運作。如果直接運行,main將被分配給特殊變數name,這將使這個條件成立,並且條件內的所有內容將照常運行。
但另一方面,如果您將其匯入另一個檔案並從那裡間接運行它,那麼條件語句將不為真,並且放置在條件中的任何內容都不會被執行。
這就是這個條件語句的意義。 當我們將腳本匯入為模組時,它可以防止Python解釋器自動執行不必要的程式碼行。
但是,即使我們將腳本作為模組導入,我們也可以呼叫這些函數。例如:
import example example.greet()
這樣,即使條件不滿足,我們也可以完美地呼叫導入模組中的任何函數。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3