簡単に言うと、__name__
スクリプトがメイン モジュールとして実行されているか、インポートされたモジュールとして実行されているかを定義する、スクリプトごとに定義された変数です。
2 つのスクリプトがあるとします。
#script1.py
print "Script 1's name: {}".format(__name__)
と
#script2.py
import script1
print "Script 2's name: {}".format(__name__)
script1 を実行した結果の出力は次のとおりです。
Script 1's name: __main__
script2 の実行結果は次のとおりです。
Script1's name is script1
Script 2's name: __main__
ご覧のとおり、__name__
どのコードが「メイン」モジュールであるかがわかります。コードを書くだけで済み、C/C++ のような構造的な問題を心配する必要がないため、これは素晴らしいことです。ファイルが「メイン」関数を実装していない場合、実行可能ファイルとしてコンパイルできず、実装されている場合は、ライブラリとして使用することはできません。
何か素晴らしいことを行う Python スクリプトを作成し、他の目的に役立つ大量の関数を実装するとします。それらを使用したい場合は、スクリプトをインポートして、プログラムを実行せずに使用できます (コードが if __name__ == "__main__":
コンテキスト内でのみ実行される場合)。一方、C/C++ では、これらの部分を別のモジュールに分割して、ファイルをインクルードする必要があります。以下の状況を想像してください。

矢印はインポート リンクです。それぞれが前のモジュール コードをインクルードしようとする 3 つのモジュールには、6 つのファイル (実装ファイルを数えると 9 つ) と 5 つのリンクがあります。これにより、特にライブラリとしてコンパイルされない限り、他のコードを C プロジェクトに含めることが難しくなります。Python の場合を想像してみてください。

モジュールを作成し、誰かがあなたのコードを使用したい場合は、それをインポートするだけで、__name__
変数はプログラムの実行可能部分をライブラリ部分から分離するのに役立ちます。