文章内容皆为个人理解,如有不足欢迎指正。
相信大家看别人代码的时候,经常会看见 if __name__=’__main__'这行代码(name和main的两边都是双下划线),它到底是个什么意思呢以及有什么作用呢?
1、什么意思?
先举个例子,加入你是李华,你有个朋友叫张三,在张三眼里,你的__name__=‘LiHua’,而在你自己眼中,你的__name__=‘自己’。
同理,在python里,现在有两个.py文件,一个叫a.py,另一个为b.py。在b.py眼里,a的__name__=‘a’,但是在a自己眼里,__name__=’__main__’。
我们具体的来看,a.py 的代码、运行结果 如下:
#a.py
print('hello')
print(__name__)
if __name__=='__main__':
print('hello world')
'''运行结果
hello
__main__
hello world
'''
b.py 的代码、运行结果 如下:
#b.py
import a
print('你好,世界')
print(__name__)
'''运行结果
hello
a
你好,世界
__main__
'''
不难看出来,直接运行a.py,__name__=’__main__'是成立的,因为print('hello world ‘)成功运行了;但是在b.py调用a.py的时候,a.py里的__name__=’__main__'并不成立了,因为这时候是以b的角度去看a.py,其__name__=‘a’。
也就是说,每个.py文件都有其__name__,自己运行的时候__name__=’__main__’,被调用的时候,__name__为文件名。
2、什么作用?
不难理解,在被调用的时候,if __name__=’__main__'下面的内容将不被执行,也就是说:你可以写一些仅在此文件运行时才执行的代码,防止此段代码被调用。
欢迎留言讨论~