学习python中会发现很多python脚本都会有一句话:if __name__ == ‘__main__’。这有点像C,java中的主函数。那么Python中__name__具有什么含义呢?网上很多说法和教程,但是百闻不如一见,要自己动手去发现。
首先看官方文档定义__name__: __name__ is the module’s name in the Python package namespace
我们写两个py文件试试就知道了。
a.py
print('============a.py==================')
print('a.py __name__:%s' % __name__)
if __name__ == '__main__':
print('hello,I\'m a.py')
执行这个文件会输出:
============a.py==================
a.py __name__:__main__
hello,I’m a.py
b.py
import a
print('============b.py==================')
print('b.py __name__:%s' % __name__)
if __name__ == '__main__':
print('hello,I\'m b.py')
输出:
============a.py==================
a.py __name__:a
============b.py==================
b.py __name__:__main__
hello,I’m b.py
b.py引入了a.py,所以也执行了a.py中的print(‘a.py __name__:%s’ % __name__),如果是执行a.py会输出:a.py __name__:__main__,而如果执行b.py则会输出:a.py __name__:a。
为什么此时a.py的__name__变成a呢?
还是回到官方文档的定义,__name__是当前模块的名称,准确的说,如果a.py被b.py或其他文件导入了,那么a.py的__name__显示文件名a,也就是它自己的文件名。(文件名说法不准确,但这样去理解)