main関数はプログラムのエントリポイントのようなものです。ただし、Python インタープリターはコードを最初の行から直接実行します。コードの実行は開始行から始まり、1 行ずつ実行されます。 main 関数がどこに存在するか、存在するかどうかは関係ありません。
無いのでmain()>Python の関数では、Python プログラムを実行するコマンドがインタプリタに与えられると、レベル 0 インデントのコードが実行されます。ただし、その前に、いくつかの特別な変数を定義します。__name__>はそのような特殊変数の 1 つです。ソースファイルがメインプログラムとして実行される場合、インタープリタは__name__>値を持つ変数__main__>。このファイルが別のモジュールからインポートされている場合、__name__>モジュールの名前に設定されます。
__name__>は、現在のモジュールの名前として評価される組み込み変数です。
例:
スイッチメソッドJava
# Python program to demonstrate> # main() function> > > print>(>'Hello'>)> > # Defining main function> def> main():> >print>(>'hey there'>)> > > # Using the special variable> # __name__> if> __name__>=>=>'__main__'>:> >main()> |
>
>
出力:
Hello hey there>
上記プログラムを実行すると、インタプリタはnameの初期値をmainとして宣言します。インタプリタが if ステートメントに到達すると、name の値をチェックし、if の値が true の場合は main 関数を実行します。それ以外の場合、main 関数は実行されません。
モジュールとしての主な機能
ここで、Python スクリプトをモジュールとしてインポートすると、__name__>変数は、インポートされた Python スクリプトの名前と同じ値を取得します。
例: 2 つのファイル (File1.py と File2.py) があるとします。 File1は以下の通りです。
# File1.py> > print>(>'File1 __name__ = %s'> %>__name__)> > if> __name__>=>=> '__main__'>:> >print>(>'File1 is being run directly'>)> else>:> >print>(>'File1 is being imported'>)> |
ネットワークの種類
>
>
出力:
File1 __name__ = __main__ File1 is being run directly>
ここで、File1.py が File2.py にインポートされると、__name__ の値が変更されます。
int から char Java へ
# File2.py> > import> File1> > print>(>'File2 __name__ = %s'> %>__name__)> > if> __name__>=>=> '__main__'>:> >print>(>'File2 is being run directly'>)> else>:> >print>(>'File2 is being imported'>)> |
>
>
出力:
File1 __name__ = File1 File1 is being imported File2 __name__ = __main__ File2 is being run directly>
上で見たように、File1.py が直接実行されると、インタープリターは__name__>変数として__main__>インポートによって File2.py を介して実行されると、__name__ 変数が Python スクリプトの名前 (つまり File1) として設定されます。したがって、 if __name__ == __main__ は、Python File1.py などのコマンドを使用してコマンド ラインからスクリプトを実行するときに実行されるプログラムの一部であると言えます。