Python中的if __name__ == '__main__'
简单来说,如果是模块本身作为脚本运行时,这个if之后的语句可以执行,如果该模块A被import到别的模块B中,运行模块B的时候A模块中的if __name__ == '__main__' 的语句将不会执行。
我们可以从具体的例子来看:
#my_math.py
def product(x, y): if x == 7 and y ==9: return 'An insidious bug has surfaced!' return x * y print(__name__)
直接运行my_math.py,将输出:
__main__
然后我们有另一个模块learning.py将my_math import进去:
#learning.py import my_math print(__name__) print(my_math.__name__)
然后运行learning.py,将会输出:
__main__ my_math
总结:当模块作为脚本直接运行时,__name__的值是__main__, 但是如果被import到别的模块中运行时,__name__的值是它自己的名字,如本例为my_math
参考文献:
http://www.dengfeilong.com/post/60.html