Python中if __name__=="__main__"的理解
2017-08-20 16:07
711 查看
自学Python,遇到该问题,下面是自己的一点心得提示。
感谢网友的分享:http://www.jb51.net/article/51892.htm
1、__name__是一个变量,前后都加双下划线是因为他是一个系统变量,代指被引函数模块所在的文件名称
2、首先定义一个module.py
#module.py
def test():
print "we are in %s"%__name__
if __name__=="__main__":
test()这个函数定义了一个test函数,我们执行一下该py文件发现结果是打印出”we are in __main__“,说明我们的if语句中的内容被执行了,调用了test():
3、定义另外一个模块:
#anothermodule.py
from module import test
test()
其执行的结果是:we are in module
但是没有显示”we are in __main__“,也就是说模块__name__ = '__main__' 下面的函数没有执行。
这样既可以让“模块”文件运行,也可以被其他模块引入,而且不会执行函数2次。这才是关键。
4、下面的模块也可以说明
# -*- coding: utf-8 -*-
# Make a script both importable and executable,让你的脚本既可以导入到别的模块中用,也可以该模块自己执行得出某个输出。
if __name__=="__main__":
print "this program is being run by itself"
else:
print "i am being imported from another module"
##当执行jm_name_import.py的时候,输出的结果是“i am being imported from another module.”
##当执行该程序本身是,输出的结果是“this program is being run by itself.”
##以上说明,当该模块是自己运行时,会执行__name__=="__main__"后面的内容,当被执行的模块不是程序本身时,即__name__不是
##该模块本身,因此不会执行__main__后面的内容。5、总结
如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == '__main__'“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是被引的这个py文件的名字而不是__main__。
这个功能还有一个用处:调试代码的时候,在”if __name__ == '__main__'“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!
感谢网友的分享:http://www.jb51.net/article/51892.htm
1、__name__是一个变量,前后都加双下划线是因为他是一个系统变量,代指被引函数模块所在的文件名称
2、首先定义一个module.py
#module.py
def test():
print "we are in %s"%__name__
if __name__=="__main__":
test()这个函数定义了一个test函数,我们执行一下该py文件发现结果是打印出”we are in __main__“,说明我们的if语句中的内容被执行了,调用了test():
3、定义另外一个模块:
#anothermodule.py
from module import test
test()
其执行的结果是:we are in module
但是没有显示”we are in __main__“,也就是说模块__name__ = '__main__' 下面的函数没有执行。
这样既可以让“模块”文件运行,也可以被其他模块引入,而且不会执行函数2次。这才是关键。
4、下面的模块也可以说明
# -*- coding: utf-8 -*-
# Make a script both importable and executable,让你的脚本既可以导入到别的模块中用,也可以该模块自己执行得出某个输出。
if __name__=="__main__":
print "this program is being run by itself"
else:
print "i am being imported from another module"
##当执行jm_name_import.py的时候,输出的结果是“i am being imported from another module.”
##当执行该程序本身是,输出的结果是“this program is being run by itself.”
##以上说明,当该模块是自己运行时,会执行__name__=="__main__"后面的内容,当被执行的模块不是程序本身时,即__name__不是
##该模块本身,因此不会执行__main__后面的内容。5、总结
如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == '__main__'“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是被引的这个py文件的名字而不是__main__。
这个功能还有一个用处:调试代码的时候,在”if __name__ == '__main__'“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!
相关文章推荐
- 关于Python中if __name__ == "__main__"的理解
- Python 中的 if __name__ == "__main__" 该如何理解
- python中的if __name__ == "main" 的理解
- python 中 if __name__ == "__main__" 的理解
- 对Python的if __name =="__main__"一些理解
- 从python run 和python unittest两种eclipse运行方式深入理解if __name__ == "__main__"
- Python 中的 if __name__ == '__main__' 该如何理解
- Python 中的 if __name__ == '__main__' 该如何理解
- Python 中的 if __name__ == '__main__' 该如何理解
- Python 中的 if __name__ == '__main__' 该如何理解
- python中if __name__ == "__main__":用法解析
- Python中if __name__ == "__main__":用法解析
- Python中if __name__ == "__main__": 的作用
- Python中if __name__=="__main__" 语句在调用多进程Process过程中的作用分析
- Python入门:简单理解if __name__ == '__main__':
- Python 中的 if __name__ == '__main__' 该如何理解
- Python中if __name__ == "__main__": 的作用
- Python if __name__ == "__main__" 的含义
- Python基础知识——python中的if __name__ == "__main__"运用
- Python 中的 if __name__ == '__main__'理解