#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()
}}

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes