在Python当中,如果代码写得规范一些,通常会写上一句“if __name__==’__main__:”作为程序的入口,但似乎没有这么一句代码,程序也能正常运行。这句代码多余吗?
与Java、C、C++等几种语言不同的是,Python是一种解释型脚本语言,在执行之前不同要将所有代码先编译成中间代码,Python程序运行时是从模块顶行开始,逐行进行翻译执行,所以,最顶层(没有被缩进)的代码都会被执行,所以Python中并不需要一个统一的main()作为程序的入口。在某种意义上讲,“if __name__==’__main__:”也像是一个标志,象征着Java等语言中的程序主入口
当你要导入某个模块,但又不想改模块的部分代码被直接执行,那就可以这一部分代码放在“if __name__=='__main__':”内部
# A.py
a = 50
print('你好,我是A.py……')
print(a)
# B.py
from package01 import A
b = 80
print('你好,我是B.py……')
print(b)
运行模块B时,输出结果如下:
你好,我是A.py……
50
你好,我是B.py……
80
如果在模块A中,我们有部分的代码不想在被导入到B时直接被运行,但在直接运行A时可直接运行,那该怎么做呢?那就可以用到“if __name__==’__main__:”这行代码了,我们对上面用到的A模块代码进行修改
# A.py
a = 50
print('你好,我是A.py……')
if__name__=='__main__':
print(a)
B模块不做修改,直接执行B模块,输出结果如下:
你好,我是A.py……
你好,我是B.py……
80
“__name__”是Python的内置变量,用于指代当前模块