【Python】if __name__ == ‘__main__’ でまだ消耗しているの?【基本講座】

【Python】if __name__ == ‘__main__’ でまだ消耗しているの?【基本講座】

Pythonを始めたころ、ソースの最後におまじないのように if __name__ == ‘__main__’ と書いていましたよね?これにどんな秘密があるのかと考えたことはないでしょうか?プログラマーたるもの知らずにコードを書くことほど危険な行為はありません。バグの温床を生む原因となります。こちらでしっかり学んでください。

出典:http://www.photo-ac.com/

if __name__ == ‘__main__’の意味を順を追って見ていこう!

__name__ って何?

モジュールをインポートすると name属性にモジュールの名前が文字列として格納されます。

例:
【モジュール名】.__name__

__main__ って何?

別のファイルからインポートされると name にはモジュール名が格納されている。
また、ファイルをコマンドラインからスクリプトをして実行すると name には、 ‘__main__’ という文字列が格納されている。

これは、トップレベルのスクリプト環境と呼ばれるものです。
‘__main__’ はトップレベルのコードが実行されるスコープの名前です。モジュールが、標準入力から読み込まれたとき、スクリプトとして実行されたとき、あるいはインタラクティブプロンプトのとき、__name__ には ‘__main__’ が設定されます。

if __name__ == ‘__main__’ の意味とは

以上から、

if __name__ == ‘__main__’ は

該当のファイルがコマンドラインからスクリプトとして実行された場合にのみ、以降の処理を実行する

という意味とわかるだろう。

こんな使い方もあるよ

みなさんになじみの深い、
app.run() 以外にも使う用途があります。
それは、unittestを行う時です。

つまり、

と書くことで、単体(関数単体)で起動実験ができます。
これはプロジェクトで作業するときに有益な情報となるので、是非役立ててほしい。

Pythonおすすめ書籍

最初の2冊は初心者向けです。Effectiv Pythonはこの2冊を終えてから読むとかなりわかりやすく感動できると思います。

基礎 Python (IMPRESS KISO SERIES)

新品価格
¥6,200から
(2020/4/21 20:50時点)

入門 Python 3

新品価格
¥4,070から
(2020/4/21 20:53時点)

Effective Python ?Pythonプログラムを改良する59項目

新品価格
¥3,520から
(2020/4/21 20:52時点)