メカエンジニアのためのプログラミング #019 Pythonの色々なmain関数

Pythonは多種多様なmain()の書き方に対応した言語である。そこでよく見かけるmian()の書き方を紹介する。

  1. 何も書かない
  2. if __name__ == “__main__”:
  3. if __name__ == “__main__”:
    main()
  4. if __name__ == “__main__”:
    sys.exit(main())

1. 何も書かない

プログラミング言語では、基本的にmain()の中に書かれたコードが上から順に実行されるが、ことPythonに関してはmain()を記載するのは必須ではない。例としてごく単純なコードであるprint()を使用したプログラムを下記に示す。


# コード
# エントリポイント
print(r"ニイタカヤマノボレ 一二〇八")

print(r"トラトラトラ")

print(r"done!")

2. if __name__ == “__main__”:

__name__ はPythonの処理エンジン側で持っている変数で、普通にpythonファイルを実行すると、__main__という文字列が代入され、外部ファイル(ライブラリー)として実行されると、ファイル名が代入される。


# コード
# エントリポイント
if __name__ == "__main__":
    print(r"ニイタカヤマノボレ 一二〇八")

    print(r"トラトラトラ")

    print(r"done!")

3. if __name__ == “__main__”:
main()

上記2のif文の中身を自作のmain()として括り出したものである。このプログラムのメインはここですよ!という設計思想を示すことができる。


# コード
def main():
    print(r"ニイタカヤマノボレ 一二〇八")
    print(r"トラトラトラ")

# エントリポイント
if __name__ == "__main__":
    main()
    print(r"done!")

4. if __name__ == “__main__”:
sys.exit(main())

上記3のmain()をexit()内で呼び出しているものである。main()実行終了時に、ステータスを返すことによって、正常に終了したか、あるいはどこでエラーになったかなどを示すことができる。最も規範的な書き方。


# コード
def main():
    print(r"ニイタカヤマノボレ 一二〇八")
    data_input_01 = input(">>>")
    
    if data_input_01 == "success":
        print(r"トラトラトラ")
        print(r"done!")
        return 0
    else:
        print("error!")
        return 1

# エントリポイント
if __name__ == "__main__":
    sys.exit( main() )

EOF

3件のコメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

トップに戻る