环境说明:
系统环境:Ubuntu16.04
Python版本:python3
python 中if __name__ = '__main__' 的作用,到底干嘛的?
有句话经典的概括了这段代码的意义:
“Make a script both importable and executable”
意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。
举个栗子就能明白:
新建一个module.py模块:
hadoop@node1:~$ nano module.py
内容为:
def main():
print("we are in %s" % __name__)
if __name__ == "__main__":
print("hello world")
main()
- 当module.py模块用于运行时:
hadoop@node1:~$ python3 module.py
hello world
we are in __main__
说明if语句被执行了, 推出”__name__”等于”__main__”
- 当module.py模块被用于导入时,例如:>>>import module
进入python命令行,导入module模块,调用一次main()函数,命令如下:
hadoop@node1:~$ python3
>>> import module
>>> module.main()
we are in module
可以看到其执行的结果是:we are in module
说明 if语句没有被执行。模块在被导入时,”__name__”等于模块名称:module
总结:
当模块用于运行时,”__name__”等于”__main__”;当模块用于被导入时,”__name__”等于模块名称。
通常,if __name__ = '__main__'语句用于模块测试中使用。
这样既可以让“模块”文件运行,也可以被其他模块引入,而且不会执行函数2次。这才是关键。
参考:
https://www.cnblogs.com/kex1n/p/5975575.html
https://www.jb51.net/article/56488.htm
https://www.jb51.net/article/68551.htm
完成!enjoy it!