Pythonのメイン関数は、Pythonプログラムとして実行されている場合にのみ実行されます。ご存知の通り、Pythonプログラムをモジュールとしてもimportできます。その場合、Pythonのメインメソッドは実行されません。
Pythonメイン関数
メイン関数はどんなプログラムのエントリーポイントです。ただし、Pythonインタプリタはソースファイルコードを順次実行し、コードの一部でないメソッドは呼び出しません。ただし、コードの一部である場合は、ファイルがモジュールとしてインポートされるときに実行されます。これが、Pythonプログラムでメインメソッドを定義する特別なテクニックがある理由です。これにより、プログラムが直接実行されるときだけ実行され、モジュールとしてインポートされた場合は実行されません。簡単なプログラムでPythonメイン関数をどのように定義するか見てみましょう。python_main_function.py
print("Hello")
print("__name__ value: ", __name__)
def main():
print("python main function")
if __name__ == '__main__':
main()
-
Pythonプログラムが実行されると、Pythonインタプリタはそのコードを実行し始めます。いくつかの暗黙の変数値も設定されますが、そのうちの1つが
__name__
で、その値は__main__
に設定されています。 -
Pythonのメイン関数では、関数を定義してから、
if __name__ == '__main__'
条件を使用してこの関数を実行する必要があります。 -
Pythonソースファイルがモジュールとしてインポートされる場合、Pythonインタプリタは
__name__
の値をモジュール名に設定します。したがって、if条件はfalseを返し、メインメソッドは実行されません。 -
Pythonはメインメソッドの名前を任意に指定する柔軟性を提供していますが、それをmain()メソッドとして命名するのがベストプラクティスです。以下のコードは完全に問題ありませんが、推奨されません。
def main1(): print("python main function") if __name__ == '__main__': main1()
以下の画像は、ソースファイルとしてpython_main_function.py
を実行したときの出力を示しています。
Pythonメイン関数としてのモジュール
今度は、上記のPythonソースファイルをモジュールとして使用し、別のプログラムにインポートしてみましょう。python_import.py
import python_main_function
print("Done")
上記のプログラムを実行すると、以下の出力が生成されます。
Hello
__name__ value: python_main_function
Done
python_main_function.py
ソースファイルから最初の2行が印刷されていることに注意してください。 __name__
の値が異なるため、メインメソッドは実行されません。 Pythonプログラムのステートメントが行ごとに実行されるため、メインメソッドを実行する前に最初にメイン()メソッドを定義することが重要です。そうしないと、NameError: name 'main' is not defined
というエラーが発生します。 以上がPythonメイン関数についてのすべてです。 参考:Pythonドキュメント
Source:
https://www.digitalocean.com/community/tutorials/python-main-function