ゆとり大学院生の日常~なんかいいことないかな~

留年と隣り合わせの情報系大学院生の日常。

pythonでおまじないのように使っていたif __name__ == '__main__':の意味を調べてみた

こんにちは。りゅうねんです。

 

pythonでコーディングを行う際に、おまじないのように書いていた

if __name__ == '__main__':

なんですがこれがどういう意味かふと気になったので、調べてみました。

 調べてみてわかったこととして

  • スクリプトを直接指定して、実行した場合、変数__name__に__main__が代入される
  • 他のスクリプトからインポートした場合、モジュール名が入りif文ではFalseになる

たとえば、hoge.pyの場合は、

直接実行したら_name__には'__main__'が代入されるので、if文がTrueになり、mainが実行されます。

 

hogeで記述した関数を別のhoge2.pyでインポートした場合は、

__name__にはhogeが代入されるので、if文がFalseになるためmainが実行されません。

 

これの利用例としては、ライブラリhoge.pyを自作する際に、テストコードをメインで記述しておけばそこの中でテストができます。

 

hoge2.pyで実際にライブラリを使用する際は、インポートされたhoge.pyのmainは実行されないのでライブラリとして実行されます。

コーディング中にライブラリとして利用する予定がなくても、基本的はこのように記述しておくといいと思います。

関数などを再利用するときにも便利なのでぜひ使ってみてください!

 

それでは〜

 

Python文法詳解

Python文法詳解