对Python中if __name__ == '__main__'的
理解
阅读Linch Halo的文章,觉得写的很好,以下是读书笔记。
假设我们def 一个函数。
def sayhello():
print 'hello'
print 'Hi!'
print __name__
Hi!
__main__
注意这里使用的市python 2,为了兼容公司系统。
__name__
描述了当前使用的模块名,如果没有import
那么就是本身__main__
,string格式。
我们将以上文档保存为A.py
,然后新建一个B.py
来调用。
import A
A.sayhello()
print('End')
这里先import A
,因此先进行
def sayhello():
print 'hello'
print 'Hi!'
print __name__
def
不反馈信息,但是print 'Hi!'
反馈Hi!
,print __name__
反馈当前引入的模块A
名字。
然后,因为sayhello()
是A
的函数,因此可以用.
+sayhello()
来调用,调用了sayhello()
,使用print 'hello'
,所以反馈hello
。
最后print('End')
,反馈End
。
因此结果是
Hi!
A
Hello!
End
我们再深入一点,
修改A.py
为
def sayhello():
print('Hello!')
print('Hi!')
print(__name__)
if __name__ == '__main__':
print ('I am just module A')
Hi!
__main__
I am just module A
运行A.py
可以看到结果。
但是运行B后,还是
Hi!
A
Hello!
End
因为if __name__ == '__main__':
不正确。