Python初心者の__name__, __main__, __init__

2021/02/19に公開

name == 'main'

Python 「if name == ‘main’:」の意味

「if name == 'main':」の意味は、「直接実行された場合のみ実行し、それ以外の場合は実行しない」

__name__の中身

entry_point.pyを実行した (= 直接実行した) 場合

% python entry_point.py
__main__!!

test_module.pyを実行した (= 「直接実行した以外」の) 場合

% python test_module.py
entry_point

[Python] if name == 'main' について理解しよう

name
importした場合は "モジュール名" に置き換わる。
ファイルを実行した場合は、"main"に置き換わる。
ファイル実行時のみ、if文の条件がTrueになるので、中身が実行される。

直接実行されたスクリプトか、それともインポートされたモジュールかを判定するための条件文。Trueなら直接実行されたもの、Falseならインポートされたモジュールということ。

先生は言いました

if name == 'main' の下にコードをダラダラと書く人、挙手しなさい
【補講】if name == 'main' の下にコードをダラダラと書く人、挙手しなさい

if __name__ == '__main__':
    main(sys.argv[1:])

main関数でくるむことによってグローバルスコープの名前空間は汚染されません。またmain関数でくるむことにより、main処理を冒頭に書けるのでコードの見通しがよくなります。python初心者のみなさんは関数でくるんでおいた方が無難です。

先生の意見は「メインモジュールにそれなりのコードを書くのであれば、if name == '__main__を書くべき」です。

if name == 'main' とはなにか
[Python] if name == 'main'の意味するところ
pythonの if name == 'main':は何のためにあるのか。
【pythonの基礎の基礎の基礎】なぜ__name__ == "main"をするか
【Python初心者】if name == 'main'を手を動かして理解する。
【python】if name == 'main':とは?

init

Python の init.py とは何なのか

Pythonのselfとかinitを理解する

こうしてまたPython初心者が同じことを説明する記事を増やしてしまった。

Discussion