环境:
Windows 10 64-bit, python == 3.6.4 , PyCharm CE == 2018.1
声明:学习资源均来自于网络,来源比较多,均不给出链接,这里是自己学习笔记汇总,每篇内容会随着学习的深入进行更新
在很多Python程序的最后部分,经常会出现if __name__ == '__main__':
这样的判断语句,并且还会执行一些代码:例如,
#module.py
def main():
print('we are in %s' % __name__)
if __name__ == '__main__':
main()
那么,这条语句的作用是什么呢?
“Make a script both importable and executable”
意思就是说,让你写的脚本既可以作为模块导入到别的模块中用,也可以自己作为.py
文件执行。
在上面的例子中,
- 如果把
module.py
作为.py
文件执行本身,则if __name__ == '__main__':
的条件为True
,调用main()
函数,执行print
语句,打印结果为:
we are in __main__
此时,当前执行的文件是主模块,属性__name__
的值就是__main__
;
- 如果,把
module.py
文件作为模块引入到另一个模块中使用时,并且调用一次main()
函数,那么执行结果为:
we are in module
此时的属性__name__
的值就是被引入的模块名称module
。
总结:
- 如果是直接执行某个
.py
文件的时候,该文件中那么__name__ == '__main__'
是True
,if
条件下的代码块将被执行。
这个功能可以用来调试代码,将测试代码块放在if条件下 - 如果是从另外一个
.py
文件通过import
导入该文件的时候,这时__name__
的值就是这个.py
文件的名字而不是__main__
,if
条件下的代码块将不会被执行。