また、なぜアンダースコアを使用するのですか? 結局、私は main メソッドを asmain()
ではなく asと定義してい__main__()
ます。
3 に答える
Python インタープリターがソース ファイルを読み取ると、その中にあるすべてのコードが実行されます。コードを実行する前に、いくつかの特別な変数を定義します。たとえば、Python インタープリターがそのモジュール (ソース ファイル) をメイン プログラムとして実行している場合、特別な
__name__
変数が値を持つように設定します"__main__"
。このファイルが別のモジュールからインポートされている場合は__name__
、モジュールの名前に設定されます。あなたのスクリプトの場合、それがメイン関数として実行されていると仮定しましょう。たとえば、次のように言いました
python threading_example.py
コマンドラインで。特殊変数を設定した後、import ステートメントを実行し、それらのモジュールをロードします。次に def ブロックを評価し、関数オブジェクトを作成し、関数オブジェクトを指す myfunction という変数を作成します。次に、if ステートメントを読み取り、それ
__name__
が equal"__main__"
であることを確認して、そこに示されているブロックを実行します。これを行う理由の 1 つは、直接実行できるモジュール (.py ファイル) を作成する場合があるためです。または、別のモジュールでインポートして使用することもできます。メインチェックを行うことで、モジュールをプログラムとして実行したい場合にのみそのコードを実行し、誰かがモジュールをインポートして関数自体を呼び出したいだけの場合は実行しないようにすることができます。
ここから引用: if __name__ == "__main__": do?
Python は、C や Java のような「メイン」関数を認識しません。ここにさらに説明があります:what-does-if-name-main-do
Python インタープリターがモジュール (ソース ファイル) をメイン プログラムとして実行している場合、特別な __name__ 変数が main() ではなく "__main__" の値を持つように設定します。