このコード行 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()
このようにして、条件が満たされない場合でも、インポートされたモジュールから関数を完全に呼び出すことができます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3