对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__':不正确。