Python メイン関数とメソッド: def Main() を理解する
⚡ スマートサマリー
Python main関数は、インタープリタがプログラムの実行を開始する開始点を示します。def main()で定義され、if __name__ == “__main__”ガードと組み合わせることで、再利用可能なモジュールコードとスタンドアロンのスクリプト実行を分離します。

何ですか Python 主な機能?
その Python メイン機能 はあらゆるプログラムの開始点です。プログラムが実行されると、 Python インタプリタはコードを順次実行します。メイン関数は、として実行されたときにのみ実行されます。 Python プログラム。モジュールとしてインポートされた場合、メイン関数は実行されません。
def main()関数とは何ですか? Pythonこれを理解するには、コアの一部である以下のサンプルコードを検討してください。 Python プログラミング 基本:
def main() 例 1
def main():
print ("Hello World!")
print ("Guru99")
ここでは、2 つの出力が得られました。1 つはメイン関数内で定義されている「Hello World!」で、もう 1 つは独立したもので、Guru99」。関数 def main (): を実行すると、
- それだけ "Guru99インチのプリントアウト
- コード「Hello World!」ではありません。
呼び出しを宣言していないためです 関数「if__name__==「__main__」。
メイン関数を定義した後、if__name__== “__main__” でコードを呼び出し、コードを実行することが重要です。そうすることで、プログラミングコンソールに “hello world!” という出力が表示されます。次のコードを検討してください。
def main() 例 2
def main():
print("Hello World!")
if __name__ == "__main__":
main()
print("Guru99")
Guruこの場合は99と印字されます。
ここに説明があります、
- Python インタプリタはソースファイルを読み取ると、そこにあるすべてのコードを実行します。
- Python 「ソースファイル」をメインプログラムとして実行し、特殊変数 (__name__) に値 (「__main__」) を設定します。
- Python で main 関数を実行すると、「if」ステートメントが読み取られ、__name__ が __main__ と等しいかどうかがチェックされます。
- In Python 「if__name__== “__main__” 実行することができます Python ファイルは 再利用可能なモジュールまたはスタンドアロン プログラム。
main() 関数を使用する理由 Python?
Python 必ずしもmain関数を記述する必要はありませんが、経験豊富な開発者は、ほとんどすべての重要なスクリプトでmain関数を使用します。def main()パターンはファイルに秩序をもたらし、コードの再利用性を高めます。このパターンを使用する主な理由は以下のとおりです。
- 明確な入り口: main()関数は、プログラムがどこから始まるかを読者に正確に示すため、ロジックを容易に理解できます。
- 再利用可能なモジュール: Code if __name__ == “__main__” によって保護されているため、直接実行時のみに実行されるため、他のファイルは副作用なしに関数をインポートできます。
- ローカル範囲: main() 関数内で作成された変数はローカル変数として保持されるため、モジュール内の他の場所にあるグローバル変数名との意図しない衝突を回避できます。
- より簡単なテスト: main() 関数内でロジックを分離することで、テストスイートがそれを直接呼び出して結果を確認できるようになります。
- 共通の慣習: main()関数は、プログラムのエントリポイントを示す広く認知された指標であり、チーム間の保守性を向上させます。
つまり、main() 関数はオプションです Pythonしかし、これにより大規模なプログラムの可読性、テスト容易性、およびインポートの安全性が維持されます。
__name__変数と Python モジュール
__name__変数の重要性を理解するには Python main 関数メソッドについては、次のコードを考えてみましょう。
def main():
print("hello world!")
if __name__ == "__main__":
main()
print("Guru99")
print("Value in built variable name is: ",__name__)
ここで、コードがモジュールとしてインポートされることを考えてみましょう。
import MainFunction
print("done")
コードの説明は次のとおりです。 Cのように、 Python 比較には == を使用し、代入には = を使用します。 Python インタプリタはmain関数を2つの方法で使用します
直接実行:
- __名前__=__メイン__
- if ステートメント == True の場合、_main_ 内のスクリプトが実行されます
モジュールとしてインポートする
- __name__= モジュールのファイル名
- if ステートメント == false、__main__ のスクリプトは実行されません
コードが実行されると、「if」を含むモジュール名がチェックされます。 このメカニズムにより、main 関数はモジュールとしてインポートされた場合ではなく、直接実行としてのみ実行されることが保証されます。
上記の例は Python 3つのコードを使用する場合 Python 2、次のコードを検討してください
def main(): print "Hello World!" if __name__== "__main__": main() print "Guru99"
In Python 3、if__nameを使用する必要はありません。次のコードも機能します
def main():
print("Hello World!")
main()
print("Guru99")
注意: main 関数を定義した後は、必ずインデントを残し、def main(): 関数のすぐ下にコードを宣言しないようにしてください。そうしないと、インデント エラーが発生します。
コマンドライン引数を渡す方法 Python main() 関数
main() 関数は、ユーザーがコマンドラインで渡す入力を処理するのに最適な場所です。 Python これらの値は、標準の sys モジュールが提供する sys.argv リストに格納されます。最初の項目である sys.argv[0] はスクリプト名であり、それ以降の値はユーザーが指定した引数です。
次の例は、main() 関数内からコマンドライン引数を読み込んで出力するものです。
import sys def main(): print("Script name:", sys.argv[0]) print("Arguments passed:", sys.argv[1:]) if __name__ == "__main__": main()
ファイルをscript.pyとして保存して実行すると python script.py アルファ ベータプログラムはスクリプト名とリスト['alpha', 'beta']を出力します。これらの値はmain()関数内で渡されるため、ロジックは整理されたままでテストも容易です。
コマンドライン入力を扱う際の、いくつかの実用的なヒントをご紹介します。
- スクリプト名を切り取ります。 sys.argv[1:] を使用すると、ユーザーが入力した引数のみを読み取ることができます。
- 本格的なツールにはargparseを使用してください。 組み込みのargparseモジュールは、sys.argvを手動で読み込むよりもはるかに安全に、フラグ、オプション、ヘルプテキストを解析します。
- 終了コードを返す: main() の戻り値がプロセスの終了ステータスになるように、呼び出しを sys.exit(main()) でラップします。
- 早期に検証する: プログラムの残りの部分を実行する前に、main() 関数の先頭で引数の数と型を確認してください。
このパターンは、シンプルなスクリプトを信頼性の高いコマンドラインツールに変えながら、ping 単一のテスト可能な main() 関数内のすべてのステップ。
Python main()関数と他のプログラミング言語との比較
C言語出身の開発者、 C++または Java 多くの場合、必須の main() 関数が期待されます。 Python これはインタプリタ言語であるため動作が異なり、インタプリタは単にファイルの先頭行から末尾までを実行します。 Python したがって、それは規則というよりは慣習である。
- C, C++、C#、および Java: main()関数は必須のエントリポイントです。ランタイムが自動的に呼び出し、プログラムごとに1つしか存在できません。
- Python: main() 関数は不要です。実行はファイルの最初の行から始まり、def main() はコード内で呼び出された場合にのみ実行されます。
- 警備員: if __name__ == “__main__” ブロックは Python コンパイルされた main() と同様の目的で、ファイルがメインプログラムの場合にのみ実行されるべきコードをマークします。
他の言語では main() エントリ ポイントが強制されるが、 Python 選択はユーザーに委ねられており、コンパイラの規則ではなく慣習を通して同様の明確さを提供しています。




