首頁 >後端開發 >Python教學 >在 Python 中使用「-m」開關的目的和好處是什麼?

在 Python 中使用「-m」開關的目的和好處是什麼?

Patricia Arquette
Patricia Arquette原創
2024-11-28 04:27:13313瀏覽

What are the purposes and benefits of using the `-m` switch in Python?

-m 開關的目的為何?

背景:問題

考慮以下兩個程式碼片段:

python -m mymod1 mymod2.py args
python mymod1.py mymod2.py args

在這兩種情況下,都會呼叫mymod1.py 並將sys. argv 設定為['mymod1.py','mymod2.py','args']。這就提出了一個問題:-m 開關的目的是什麼?

答案:-m 的作用

-m 開關有幾個重要的用途:

  1. 從命令列執行Python程式碼:它允許您透過指定模組名稱而不是指定模組名稱來從命令列執行Python程式碼。 文件名。當您知道模組名稱但不知道檔案名稱時,這非常有用,特別是對於標準庫模組或第三方模組。
  2. 將目錄新增至 sys.path: Python 根據模組檔案名稱決定在其 sys.path 上。 -m 開關將目前目錄新增至 sys.path,讓您可以從目前目錄匯入模組。
  3. 使用相對導入執行程式碼: 從指令執行具有相對導入的模組時行中,-m 開關將 __package__ 變數設定為指定模組名稱的父模組。這使得相對導入能夠正常運作。

用例

-m 開關的兩個值得注意的用例是:

  1. 運行標準庫或第三方模組: 如果您知道模組名稱但不知道檔案名,則可以使用-m 來運行它命令行,例如python -m http.server.
  2. 使用導入執行本地包: 您可以使用 -m 執行包含絕對或相對導入的本地包,而無需安裝它。這與使用 pip install -e 類似。

詳細比較

為了說明模組執行方式的差異,這裡有詳細比較:

透過Import語句執行:

    透過Import語句執行:
  • 透過Import語句執行:
  • 透過Import語句執行:

sys.path 是未修改。 __name__ 設定為絕對模組名稱。

    __package__ 設定為直接父包。
  • __init__.py 針對所有套件和程式碼模組進行評估.
  • 透過命令列執行檔名:

sys .path 被修改為包含檔案名稱的父目錄。 __name__ 設定為 '__main__'。

__package__ 設定為無。 __init__.py 不會針對任何內容進行評估package.透過命令列執行,模組名稱:
  • sys.path 被修改為包含目前目錄。
  • __name__ 設定為 '__main__'。
  • __package__ 設定為模組名稱的直接父包。
  • __init__.py 針對所有套件和程式碼進行評估

結論

-m 開關是一個增強 Python 執行能力的多功能工具。它支援方便的模組執行,結合了導入和命令列執行的功能,並允許透過相對導入執行本地包。

以上是在 Python 中使用「-m」開關的目的和好處是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn