#author("2018-07-25T23:37:02+09:00","default:Miyashita","Miyashita") #author("2018-07-25T23:37:28+09:00","default:Miyashita","Miyashita") *「if __name__ == '__main__':」について [#v1586bfb] 「if __name__ == '__main__':」内は,main文として扱う時だけ実行する.~ これの外にある文は,importするだけでも実行されてしまうので注意.~ 下記のようなhoge.pyがあるとする. #codeprettify(lang-python){{ #!/usr/bin/env python # -*- coding: utf-8 -*- import numpy as np # def def testf(x,y): ''' test ''' val = x**y return val # ①importでも実行する x,y = 2,3 z = testf(x,y) print 'z = '+str(z) # ②main文として扱う場合だけ実行 if __name__ == '__main__': x,y = 3,2 z = testf(x,y) print 'z = '+str(z) }} これを #codeprettify(lang-bash){{ python hoge.py }} で実行すると #codeprettify(lang-bash){{ z = 8 z = 9 }} のように,zが①と②の両方で算出される.~ importした時は①だけ.~ importでは,関数を呼び出す以外の処理はおそらく望ましくなく,バグに繋がる可能性も考えられるため,原則的に①の部分にmain文のようなものは含めない.~ 以下のように,main文も関数にし,main()を実行させるものが多い. #codeprettify(lang-python){{ def main(): (mainの記述) if __name__ == '__main__': main() }}