import ~~
def hoge
#~~
if __name__ = "__main__":
#~~
こういうコードをみるけど、__name__
ってなんなのっていう話。
pythonインタープリターがコードを実行する前に定義する特別な変数がいくつかあり、そのうちの一つが__name__
変数である。そして、読んでいるモジュールすなわちソースコードがメインプログラムだった場合、pythonは__name__
変数に値"__main__"
をセットする。もし、ファイルが他のモジュールからインポートされている場合は、__name__
には、そのモジュール名が入る。
つまり、コンソールで、
python sample.py
とかしてるときは、メインプログラムとして走らせてるsample.py内では__name__
変数に__main__
がセットされているということ。
上のsample.pyでいうと、こういう特殊な最初に定義される変数をセットしてから、次にimport
宣言たちを実行して、その次にdef
ブロックを評価してhogehoe
っていうfunction objectを参照する変数をつくる。それからif
文を見に行き、その中の処理を実行する。
この手順によって、定義した関数とかインポートしたモジュールをもってしてif内の処理を実行できる。
これを持つ意味は、他のモジュールからインポートされた際には実行されたくないけど、メインプログラムとして走らせたときには行い処理をかけるね。C++とかjavaのmain関数の考えかたと一緒ってことかな。
なるほど。