Python中的if__name__ == "__main__"
Pythonの初心者のif __name__ == "__main__"
場合、他の人のコードを見るとよく見られます。このとき、私は不平を言い始めます。「これは間違いなく見せかけです。この文は書きません。コードはまだうまく機能しません。
このコード行に最初に遭遇したとき、私は心の中でそう思いました!
トゥカオはトゥカオに戻ります、存在する理由があるに違いありません。ここで、このコードの意味を見てみましょう。この文は、Pythonモジュールをより高いレベルで理解するのに役立つためです。
例を通して理解する
モジュール(.pyファイル)を作成する限り、モジュールには組み込みの属性名が生成され、モジュール名の 値はモジュールの 適用方法によって異なります。つまり、モジュールを直接実行する__name__ == "__main__"
場合、;モジュールをインポートする場合 、モジュール名の値は通常、モジュールファイル名です。
たとえば、test1.pyを作成します。
def func():
print('hello, world!')
if __name__ == "__main__":
func()
モジュールでは、関数func()が最初にhello、world!を出力するように定義され、次に__name__
等しいかどうかが 判断され__main__
ます。等しい場合は印刷が行われ、そうでない場合は逆になります。モジュールを実行すると、結果は次のようになります。
hello, world!
説明__name__
はに等しい __main__
。
このとき、次のコードを入力します。
別のtest2.pyを作成します。
import test1
print('bye, world!')
モジュールで、最初にtest1をインポートし、次にprint bye、world!をテスト目的で実行し、モジュールを実行すると、結果は次のようになります。
bye, world!
操作結果はbye、world!のみであり、。__name__
と等しくないことを 示してい__main__
ます。
上記のtest1.pyとtest2.pyの2つのモジュールを通じて、非常に実用的な結論を導き出すことができ ます。モジュールを直接実行するとコードブロックが実行され、モジュールをインポートするとコードブロックは実行されません。