Python脚本和模块都是一个以.py结束的文件,那程序是如何判断一个.py文件是作为脚本还是模块呢?关键是一个名为__name__的变量,如果它的值是__main__,则不能作为模块,只能作为脚本直接运行。所以在很多脚本的最后都有一段类似下面的语句,限制只能以脚本方式运行,不作为模块:
if __name__ == '__main__': main()
最近一直在学习用python,因为遇到过几次 if __name__ == "__main__" 表达式,当时没当作回事,其实这个作用挺大的,因此写下来记录一下备忘。 python的语法我就不在此描述了,因为相关文档很多。 test.py
< Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ >
def
test():
print
"
testisrunning
"
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
if
__name__
==
"
__main__
"
:
#
自运行时调用该程序块
print
"
testmainisworking
"
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
if
__name__
==
"
test
"
:
#
import时调用该程序块
print
"
testisinvoked
"
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
自执行效果如图: import执行效果如图:
执行test()方法效果如图:
通过这个例子,python应用模块的自测试程序都放在 if __name__ == "__main__" 条件块下是多么方便。