if name == "main": Java の main() メソッドと同じように、Python プログラムの入り口とみなすことができますが、完全に正しいわけではありません。
実際には、Python プログラムは上から下に 1 行ずつ実行されます。.py ファイルでは、def の後に定義された関数を除いて、コードは「main」の内容とみなされます。メソッドを上から下に実行します。素晴らしい「hello world」を書きたいだけで、関数は書きたくない場合は、 print(‘hello world’) だけを実行できます。これは「プログラム」であり、いわゆる「メイン」は必要ありません。 "メソッドエントリ。もちろん、関数 function をテストしている場合は、.py ファイルに if name == "main" と記述してから関数を呼び出す必要があります。
たとえば、次の hello.py ファイル:
print("first") def sayHello(): str = "hello" print(str); print(__name__+'from hello.sayhello()') if __name__ == "__main__": print ('This is main of module "hello.py"') sayHello() print(__name__+'from hello.main')
実行結果:
first This is main of module "hello.py" hello __main__ from hello.sayhello() __main__ from hello.main
意味がわかりますか?まず print の 1 行目を実行してから、「entry」の中のものを実行します。
そういえば、if name == "main" という文はどういう意味でしょうか?
name__ は実際には、現在の py ファイルを呼び出す方法を示す組み込み属性です。上記の例を実行すると、プログラム全体の __name__ 属性がどこにあっても、値は __main になります。この hello.py ファイルが、world .py などの別の .py ファイル (つまり、インポート) にモジュールとしてインポートされると、値は __main になります。で、world.py を実行していると、hello.py の __name__ 属性が hello になります。if 判定が失敗するため、いわゆる入り口は実行されません。
つまり、if 文が判定されます。 main() メソッドは正常に仮想化されました。
前述したように、phthon は 1 行ずつ実行されるため、import hello を読み取ると、hello.py も実行されます。たとえば、次の world.py ファイルを実行します:
import hello#上一个例子的hello.py if __name__ == "__main__": print ('This is main of module "world.py"') hello.sayHello() print(__name__)
Execution結果:
first This is main of module "world.py" hello hellofrom hello.sayhello() main
hello.py の print(‘first’) の最初の行が直接実行され、hello.py の __name__ も hello を出力し、world.py の名前が出力されることがわかります。出力は__main__
です以上がPythonでのmainメソッドの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。