zoukankan      html  css  js  c++  java
  • if __name__ == '__main__':

    python

    if __name__ == '__main__':

    模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__"。

    “Make a script both importable and executable”

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

    这句话,可能一开始听的还不是很懂。下面举例说明:

    #test.py
    def main():
      print "we are in %s"%__name__
    if __name__ == '__main__':
      main()
    
    
    #we are in __main__
    #zz.py
    from test2 import main
    main()
    
    
    #we are in test2

    但是没有显示”we are in __main__“,也就是说模块__name__ = '__main__' 下面的函数没有执行。

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

    如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == '__main__'“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字而不是__main__。

    这个功能还有一个用处:调试代码的时候,在”if __name__ == '__main__'“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!

    公众号请关注:侠之大者
  • 相关阅读:
    iOS崩溃治理--基础设施篇
    iOS崩溃治理--开篇
    AFNetworking 源码解读
    NSURLSession使用, 后台下载
    iOS10 越狱, openSSH
    iOS 私有API调用
    IOS 中openGL使用(使用基准图快速制作滤镜)
    IOS 中openGL使用教程4(openGL ES 入门篇 | 离屏渲染)
    IOS 中openGL使用教程3(openGL ES 入门篇 | 纹理贴图(texture)使用)
    SSM整合配置文件的主要内容
  • 原文地址:https://www.cnblogs.com/kamil/p/5213819.html
Copyright © 2011-2022 走看看