このコード行 if __name__=="__main__": は、実際の目的を知らずに、Python スクリプトで頻繁に目にしたことがあるかもしれません。この短いブログでこれについて説明しますので、ご安心ください
プログラムまたはスクリプトを直接実行すると、Python は自動的に「main」を特別な name 変数に割り当てます。これは基本的に、ファイルがここでは「メイン」スクリプトであり、別のスクリプトにインポートされるのではなく直接実行されていることを示すために行われます。
これを理解するには、新しい Python スクリプトを作成します。たとえば、「example.py」という名前を付けて次のように記述します。
print("Name of Script: ", __name__)
これを実行すると、「スクリプト名: __main__」という出力が表示されます。これは単にファイルが直接実行されているためです。
次に、別の Python スクリプト ファイルを作成し、example.py をこのファイルにインポートします。実行すると、「スクリプト名: example」という別の結果が表示されます。これは単に、スクリプトを直接実行するのではなく、スクリプトをインポートして間接的に実行しているためです。したがって、Python はファイルの実際の名前を表示するようになりました。
さらに理解できるように、サンプル ファイルにいくつかの変更を加えてみましょう。
def s_name(): print("Name of Script: ", __name__) s_name() def greet(): print("Hello! How are you doing?") if __name__=="__main__": greet()
これを直接実行するとすべてが完全に実行されますが、example.py スクリプトをインポートしている他のファイルを実行すると、greet 関数の呼び出しが実行されていないことがわかります。それはなぜですか?
これは if 条件によるものです。条件文が行うことは、ファイルが直接実行されているかどうかを確認することです。直接実行されている場合、main は特殊変数 name に割り当てられ、これによりこの条件が true になり、条件内のすべてが通常どおり実行されます。
しかし、一方で、それを別のファイルにインポートして、そこから間接的に実行している場合、条件ステートメントは true ではなくなり、条件ステートメント内に配置されたものは実行されません。
これがこの条件文の重要性です。 スクリプトをモジュールとしてインポートするときに、Python インタープリターが不要なコード行を自動的に実行するのを防ぎます。
ただし、スクリプトをモジュールとしてインポートしている場合でも、これらの関数を呼び出すことができます。例:
import example example.greet()
このようにして、条件が満たされない場合でも、インポートされたモジュールから関数を完全に呼び出すことができます。
以上がPython で __name__ =__main__ を実行するとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。