背景
初学者在学习Python的过程中,一定都遇到过if __name__ == '__main__'
这样的语句。那么,这样的一个语句有什么作用呢?在什么时候需要使用这个判断语句呢?
举个例子
执行:
def main():
print "hello world!"
print __name__
if __name__ == '__main__':
main()
print __name__
文件名为:tesy.py
执行结果为:
可以看到,直接执行该模块,__name__
变量为__main__
。
执行:
import test
文件名为:test1.py
执行结果为:
可以看到,将test作为模块导入另一个文件中,得到的结果为test。
这是因为在导入test模块后,也会执行该模块。当__name__
为__main__
时才会执行main()。
然而test作为模块导入另一个文件时,__name__
为模块名:test。因此最后只打印了一个test。
语句的作用
我们应该都知道类似__xxx__
这种形式的变量是python的内置变量,在声明用户变量时不可以与内置变量重复。而这个__name__
内置变量代表的是模块名(模块也就是python文件)。该模块名在直接运行模块时为__main__
,在作为模块导入时为模块本身名称。
所以,这个语句的作用就是:当该模块直接运行时执行if__name__=='__main__'
中的语句。当该模块作为模块导入到别的文件中时,因为__name__
不为__main__
,于是这个判断中的语句不能被执行。