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関数の考えかたと一緒ってことかな。
なるほど。