python中的if __name__=='__main__'

背景

初学者在学习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__,于是这个判断中的语句不能被执行。

猜你喜欢

转载自blog.csdn.net/hty46565/article/details/82590389