在python中,我们经常看到在源文件的最后通常都会有这样一个语句:
If __name__ == '__main__':
那么,它的作用究竟是什么呢?
比如我们定义了一个python文件为example.py:
def test():
print 'success'
if __name__ == '__main__':
test()
那么出来的结果是:success。这说明变量 __name__ 的值确实是 '__main__'
但是如果我是使用这样的命令:
import example
example.__name__
出来的结果是:'example',如下图:
当python解析器读取example.py这个文件的内容时,它会执行这个文件里面的代码。在执行之前,python解析器会定义一些特殊的变量。在上面的例子中,对于第一种做法,python解析器会将变量 __name__ 的值变为’__main__’ 。所以也就能够调用到test函数。对于第二种做法,python解析器会将变量__name__ 的值变为’example’,也就是文件名。
这样做的目的是,有时候你写了一个模块(文件),你调试的时候可以直接运行这个文件,当它被导入(import)其他模块时,调试的信息就不会被调用到。
参考链接:
https://stackoverflow.com/questions/419163/what-does-if-name-main-do
http://ibiblio.org/g2swap/byteofpython/read/module-name.html