トップページ> "> 開発 "> Python

Pythonの if __name__ == "__main__": ってなんだ?

 サンプルスクリプトなんかを見てると、コードの最後のほうにこんなのが出てくる。

myapp.py

 

・・・

if __name__ == "__main__":
    app = MyApp(0)
    app.MainLoop()

 このifの後ろはアプリケーションのインスタンスを作ってメインループ実行、ということをやってるんだなってことはわかる。

 問題は、このif。実は、このifは、「直接実行されたら」という意味になるようだ。

 例えば、以下のように実行された場合には、ifの中味が実行される。

python.exe myapp.py

 じゃあ、「直接実行されないケース」って一体なんなんだというと、importされたとき。importされると、このif分の中味は実行されない。

import myapp

 ▲別のコードから、importされたときは、if __name__…の中味は実行されない。

 つまり、自分でクラスを書いて、コードの一番最後に「if __name__ ==…」を書き、テストコードをつけとけば、クラスの単体テスト機能つきのクラスが出来上がるというわけだ。

 そうか。

 今の私は別ファイルにクラスを書くほど大きなスクリプトを作ったりしないので、ああそうなの程度に理解しておくことにしよう。

  はてなブックマーク - Pythonの if __name__ == この記事にTwitterでつぶやく このページをはてなブックマーク
次のwxGladeをざっくり使う pythonコード出力までへ
トップページ> "> 開発 "> Python もくじ