1 min read

对Python中`if __name__ == '__main__'的`理解

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