zoukankan      html  css  js  c++  java
  • 【Python中if __name__ == '__main__': 的解析】

    在很多Python代码中,在代码的最下方会看到  if __name__ == '__main__':,这段代码到底有什么用呢?

    在理解这个语句的作用前,需要知道的是,一般的Python文件后缀为.py,其可以拿来执行,也可以用来作为模块使用import导入。当Python解析器读取一个源文件时它会执行所有的代码。在执行代码前会定义一些特殊的变量。如果解析器运行的模块(源文件)作为主程序,它将会把__name__变量设置成”__main__”。如果只是引入其他的模块,__name__变量将会设置成模块的名字,模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。

    在代码下方添加  if __name__ == '__main__':  的主要原因是有时你需要你写的模块既可以直接的执行,还可以被当做模块导入到其他模块中去.通过检查是不是主函数,可以让你的代码只在它作为主程序运行时执行,而当其他人调用你的模块中的函数的时候不必执行。

    简单来说就是,方便我们代码复用,也可以测试模块。

    举例说明:

    创建一个using_name.py

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    print(__name__)

    直接执行输出:

    python using_name.py
    __main__    #变成__main__

    导入模块后:

    复制代码
    (py3) smallmars:day6 hexin$ python
    Python 3.5.3 (default, Apr 23 2017, 10:52:19)
    [GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import using_name
    using_name      #变成模块名字
    >>>
    复制代码

    修改using_name.py

    if __name__ == '__main__':
        print('run  itself')
    else:
        print('imported from another module')

    直接执行输出

    python using_name.py
    run itself

    导入模块方式

    复制代码
    (py3) smallmars:day6 hexin$ python
    Python 3.5.3 (default, Apr 23 2017, 10:52:19)
    [GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import using_name
    imported from another module    #执行else内容
    >>>
    复制代码
  • 相关阅读:
    理解 CSS3中 object-fit
    CSS布局总结(一)
    Webpack 学习记录之概念
    python中深浅拷贝
    Vue中的动画封装
    Vue中的列表过渡
    Vue中多个元素或组件的过渡
    Vue中的Js动画与Velocity.js 的结合
    在Vue中同时使用过渡和动画
    在Vue中使用 animate.css 库
  • 原文地址:https://www.cnblogs.com/zhangyingai/p/7097935.html
Copyright © 2011-2022 走看看