首頁 > 後端開發 > Python教學 > 使用-m執行Python程式碼時呼叫有什麼不同?

使用-m執行Python程式碼時呼叫有什麼不同?

DDD
發布: 2024-10-22 21:28:30
原創
911 人瀏覽過

What are the Differences in Invocation when Executing Python Code with -m?

使用-m 了解Python 程式碼執行中的呼叫差異

Python 解釋器提供-m 選項,該選項可讓您執行程式庫模組作為__main__ 模組中的腳本。這種方法與不使用 -m 選項直接執行腳本不同,會導致某些差異和影響。

實際差異

使用 -m 時,Python 以不同的方式管理套件。如果您嘗試在沒有 -m 的情況下執行套件,解釋器會將其視為常規腳本。相反,使用 -m 可以導入包,並且相對導入會正確地將包視為起點。

例如,考慮a.py 中的以下程式碼:

執行python a.py 會產生:

而使用python -m a 會產生:

這裡,在第一種情況下__package__ 變數為空,因為檔案是作為腳本執行。使用 -m 時,__package__ 設定為空字串,因為該模組不在套件內。

packagename

對於__package__:

    對於__package__:
  • 對於在下列範圍內使用 -m 運作的模組包,__package__ 設定為套件的名稱。

對於 __name__:
  • 它引用執行腳本時所建立的 main
  • 模組。
  • 對於使用 -m 運行的套件,它指的是儲存在 sys.modules['__main__'] 中的全域命名空間。使用 -m 運行套件時,將執行套件中的 main
  • 模組。

套件執行的影響

運行套件因為有 -m 的腳本需要套件內有 __main__.py 模組。當 Python 使用 -m 開關執行套件時,此模組會充當入口點。

以上是使用-m執行Python程式碼時呼叫有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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