また、なぜ C と Javamain
で特別な意味があるのかを尋ねる必要があります。これは、言語設計者の選択にすぎません。 main
呼び出された可能性もありますがstart
、begin
誰かが選択main
してスタックしました。
main
Python では、関数を呼び出して、それをプログラムの開始点にすることができない理由はありません。ただし、Python には、特定のファイルが と同等かどうかを識別する独自の構文がありますmain
。
__name__ == "__main__"
これは通常、 の一部としてラップされ、実際にプログラムを開始する関数if
の呼び出し内に単一の行を含めることができます。main
Python および多くの (すべて?) スクリプト言語の設計の一部は、コードを単純にインラインで記述できることです。すべてを関数にラップする必要はありません。そのため、多くの単純なスクリプトは関数をまったく必要としません。たとえば、ログ ファイルをローテーションする cron ジョブは、関数が定義されていない Python ファイルのコード ブロックとして記述できます。
そのシナリオでは、main
メソッドは必要ありません。
多くの点で を必要としないことでmain
、特に単純なタスクの場合、言語がより柔軟になります。
補遺:
編集にコンテキストを追加するには。その記事は非常に貧弱な議論を提示しています. 実際には、同じまたは類似のことを行うモジュールが多数あるため、関数名の衝突は珍しくありません (コアではそれほど多くはありませんが、pip を使い始めるとすぐに奇妙な衝突に遭遇します)。したがって、わかりやすい関数名を使用し、from foo import *
.
C++ プログラマーが一般に で名前空間を汚染するのは悪い形式だと考えるのと同じようにusing namespace std
、Python プログラマーは通常、名前空間を で汚染するのは悪い形式だと考えていますimport *
。
最後に、プログラムで 2 つの関数を呼び出すことはほとんどありませんmain
。他の場所で名前の衝突が発生する可能性がはるかに高くなります。本当の危険は、関数ではなく、ワイルドカードのインポートmain
です。