-m を使用して Python コードを実行する場合の呼び出しの違いは何ですか?

DDD
リリース: 2024-10-22 21:28:30
オリジナル
800 人が閲覧しました

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

-m を使用した Python コード実行の呼び出しの違いについて

Python インタープリターには、ライブラリ モジュールを実行できる -m オプションが用意されています。 __main__ モジュール内のスクリプトとして。このアプローチは、-m オプションを使用せずにスクリプトを直接実行する場合とは異なり、特定の区別と影響が生じます。

実際的な違い

-m を使用する場合、Python はパッケージを異なる方法で管理します。 -m を指定せずにパッケージを実行しようとすると、インタープリタはそれを通常のスクリプトとして扱います。対照的に、-m を使用すると、パッケージをインポートでき、相対インポートではそのパッケージが開始点として正しく考慮されます。

たとえば、a.py の次のコードを考えてみましょう:

<code class="py">if __name__ == "__main__":
    print(__package__)
    print(__name__)</code>
ログイン後にコピー

python a.py を実行すると次の結果が得られます:

None
__main__
ログイン後にコピー

一方、python -m a を使用すると次の結果が得られます:

""
__main__
ログイン後にコピー

ここで、最初のケースでは、ファイルが次のとおりであるため、__package__ 変数は空になります。スクリプトとして実行されます。 -m を指定すると、モジュールがパッケージ内にないため、__package__ は空の文字列に設定されます。

packagename

__package__ の場合:

    -m なしで実行されるスクリプトの場合、パッケージにできないため、__package__ は None に設定されます。
  • -m で実行されるモジュールの場合、範囲内にありますパッケージの場合、__package__ はパッケージの名前に設定されます。
__name__ の場合:

    スクリプトの実行時に作成される
  • main モジュールを参照します。
  • -m で実行されるパッケージの場合、sys.modules['__main__'] に格納されているグローバル名前空間を参照します。パッケージ内の
  • main モジュールは、-m を指定してパッケージを実行すると実行されます。

パッケージ実行の影響

パッケージの実行-m を指定したスクリプトには、パッケージ内に __main__.py モジュールが必要です。このモジュールは、Python が -m スイッチを使用してパッケージを実行するときのエントリ ポイントとして機能します。

以上が-m を使用して Python コードを実行する場合の呼び出しの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!