Python に main 関数がない理由は何ですか?

WBOY
リリース: 2023-04-19 10:01:04
転載
2193 人が閲覧しました

なぜ main 関数をエントリ ポイントとして強制する必要があるのでしょうか?

これらの言語はすべてコンパイル済み言語であり、コードを実行可能なバイナリ ファイルにコンパイルする必要があります。オペレーティング システム/ブートローダーがプログラムの先頭を見つけるには、そのような関数を定義する必要があります。

つまり、重要な始まりを大量の実行可能コードで定義する必要があります。

これらの言語にとって、main 関数が不可欠なコンポーネントであることは、難しくありません。

しかし、Python に注目すると、状況がまったく異なることがわかります。

  • Python はインタープリター言語、つまりスクリプト言語です。実行プロセスは行ごとに上から下に実行されます。これは、その開始点がわかっていることを意味します。

  • 各 .py ファイルは、プログラム全体のエントリ ファイルとして使用できる実行可能ファイルです。つまり、プログラムのエントリは非常に柔軟であり、次の手順に従う必要はありません。あらゆる慣例。

  • Python プロジェクトの実行時にエントリ ファイルを指定する必要がない場合があります (「python -m http.server 8000」などのコマンド ラインの方が一般的です)。おそらく次のような理由が考えられます。 main.py ファイルがあり、ソフトウェア パッケージ内の「ファイル」として実行されます。

つまり、スクリプト言語としての Python はコンパイル言語とは異なります。単一のモジュール (つまり .py ファイル) であっても、複数のモジュールで構成されるソフトウェア パッケージであっても、Python は柔軟な実行方法を選択できます。これは、エントリ ポイントを定義する必要がある他の言語とはまったく異なります。

言い換えれば、Python では、プログラマーが構文 (関数、クラス、その他のもの) で統一されたエントリを定義する必要はありません。

次のコードを頻繁に見たり書いたりするので、混乱する学生もいるかもしれません:

# main file  
def main():      
    ……  
  
if __name__ == '__main__':      
    main()
ログイン後にコピー

これは Python の主要な機能ではないでしょうか?そう思っている人も多いと思います!

いいえ、そうではありません。

このコードは、関数名が「main」であることを除いて、前に紹介した main 関数とは何の関係もありません。この関数は必要ありませんし、プログラムの実行順序を決定することもできません。上記のような main 関数がなくても、構文上の問題は発生しません。

人々が main 関数を書きたがる主な理由は、実際には、これが main 関数であることを強調し、それを最初に実行される関数として人工的に設定したいと考えているためです。

彼らは、この名前の関数の方が覚えやすいと考えるかもしれません。

彼らが name ==‘main’ と書きたい理由は、main() が現在のスクリプトを直接実行します。スクリプトが他のモジュールにインポートされている場合にのみ実行されますが、他のモジュールにインポートされた場合には実行されません。

ただし、個人的にはこの書き方はお勧めしません。

簡単な例を挙げると、コードが数十行しかない、またはスクリプト ファイルに単純な関数 (クローラー、タートルの描画など) が実装されているものの、すべてが含まれているとします。前の方法で書かれたとおりです。

if name == 'main' と記述することはお勧めできません。理由は次のとおりです:

  • まず、ファイルが 1 つしかない場合の場合、このファイルはエクスポートできない可能性があります。

  • 第 2 に、複数のファイルがある場合は、このステートメントをエントリ ファイル (main.py) に記述しないことを強くお勧めします。理論上、その内容は出発点であるため、他のモジュールで使用するためにエクスポートされるべきではありません。

  • 最後に、複数のファイルの場合、このステートメントで実行できるのはいくつかのテストを記述することだけであるため、このステートメントをエントリ以外のファイルに記述することはお勧めできません。 。それでも、テスト コードは専用のディレクトリまたはファイルに個別に書き込む必要があります。

このぎこちないコードを見るたびに気分が悪くなります。なぜこのような if 文を書くのでしょうか?このコードを関数にラップしないでください。

以上がPython に main 関数がない理由は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート