码迷,mamicode.com
首页 > 编程语言 > 详细

python 中__name__ = '__main__' 的作用

时间:2017-11-02 13:09:03      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:意义   print   代码   tab   python   排查   引用   module   模块   

#hello.py
def sayHello():
    str="hello"
    print(str);
if __name__ == "__main__":
    print (This is main of module "hello.py")
    sayHello()

当单独执行该module时,比如单独执行以上hello.py: python hello.py,则输出

This is main of module "hello.py"
hello

可以理解为"if __name__=="__main__":" 这一句与c中的main()函数所表述的是一致的,即作为入口

当该module被其它module 引入使用时,其中的"if __name__=="__main__":"所表示的Block不会被执行,这是因为此时module被其它module引用时,其__name__的 值将发生变化,__name__的值将会是module的名字。比如在python shell中import hello后,查看hello.__name__:

>>> import hello
>>> hello.__name__
‘hello‘
>>>

有句话经典的概括了这段代码的意义:“Make a script both importable and executable

意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。

在cmd 中直接运行.py文件,则__name__的值是‘__main__‘;
而在import 一个.py文件后,__name__的值就不是‘__main__‘了;
用if __name__ == ‘__main__‘来判断是否是在直接运行该.py文件

这样既可以让“模块”文件运行,也可以被其他模块引入,而且不会执行函数2次。

总结一下:
如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == ‘__main__‘“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字而不是__main__。
这个功能还有一个用处:调试代码的时候,在”if __name__ == ‘__main__‘“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!

python 中__name__ = '__main__' 的作用

标签:意义   print   代码   tab   python   排查   引用   module   模块   

原文地址:http://www.cnblogs.com/sangern/p/7771389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!