zoukankan      html  css  js  c++  java
  • if __name__ == '__main__' 用法理解

    我们知道:

    一个Python文件有两种使用方法, 第一是直接作为脚本执行,第二是通过在其它py文件中导入该文件调用执行。
    而if __name__ == '__main__'的作用就是控制这两种情况的代码执行过程。
    简言之:if __name == '__main__'下的代码只有在被作为脚本执行的情况下才会执行
     

    举个例子:

    新建test_01.py文件:

    print('Run is good sport!')
    print(__name__)
    if __name__ == '__main__':
        print('我被当作脚本执行了')
     
    # 执行test_01.py结果:
    Run is good sport!
    __main__
    我被当作脚本执行了

    新建test_02.py文件:

    from name_main import test_01
    print(__name__)
     
    # 执行test_02.py结果:
    Run is good sport!
    name_main.test_01
    __main__

    分析:

    第一次执行test_01.py文件:
    test_01.py当作脚本执行,则脚本中的__name__就是'__main__',所以会依次执行
    print('Run is good sport!')
    print(__name__)
    print('我被当作脚本执行了')
     
    第二次执行test_02.py文件:
    首先导入test_01.py文件,py文件在导入的时候会执行导入文件的代码所以
    print('Run is good sport!')
    print(__name__)
    然后由于test_01.py文件是作为模块导入的,所以此时__name__就不会是'__main__'(而是导入的文件名name_main.test_01),所以if __name__ == '__main__'条件不成立
    然后继续执行
    print(__name__),此时的__name__由于是test_02.py当作脚本执行,所以就是'__main__'
     

    最后总结:

    if __name__ == '__main__'的主要用处就是模块当作脚本执行时的部分代码私有化,也就是只有当作脚本执行的时候if __name__ == '__main__'下的代码才会执行。
  • 相关阅读:
    mysql 数据库之存储过程语法
    数据库之多表查询
    mysql 查询之数据语句分类
    mysql 之分组查询
    mysql之查询排序
    mysql 之分页查询
    简述Hibernate常见优化策略
    如何理解Hibernate的延迟加载机制?
    hibernate中Session的load和get方法的区别是什么?
    HttpServlet容器响应Web客户请求流程?
  • 原文地址:https://www.cnblogs.com/suguangti/p/12632119.html
Copyright © 2011-2022 走看看