美文网首页
27.python __name__ == ‘__main__’

27.python __name__ == ‘__main__’

作者: 猿说编程 | 来源:发表于2019-12-29 18:12 被阅读0次

      学习过C语言或者Java语言的盆友应该都知道程序运行必然有主程序入口main函数,而python却不同,即便没有主程序入口,程序一样可以自上而下对代码块依次运行,然后python不少开源项目或者模块中依然存在__name__ == “__main__”这种写法,具体是上面意思呢?

    还有这种操作

    一.语义解释

      1.name

      name 是python的内置属性,是系统全局变量!每一个py文件都有一个属于自己的__name__

      如果py文件作为模块被导入(import),那么__name__就是该py文件的文件名(也称 模块名);

      如果py文件直接运行时(Ctrl+Shift+F10),那么__name__默认等于字符串”__main__”;

      举个简单的例子:假如你名字是张三,在朋友眼中,你是张三(__name__ == '张三');在你自己眼中,你是你自己(__name__ == '__main__')

    就是有这种操作

      2.”main

      “_ _main_ _” 实际上就是一个字符串,用来鉴别程序入口,没有太多花里胡哨的东西.

      3.name == “main

      当.py文件被直接运行 (Ctrl+Shift+F10)时,if __name__ == “__main__”之下的代码块将被运行,该语句就相当与python的main主函数入口,示例代码如下:

      a.新建一个 my_name.py 文件,作为模块文件:

    # !usr/bin/env python
    # -*- coding:utf-8 _*-
    
    """
    @Author:何以解忧
    @Blog(个人博客地址): shuopython.com
    @WeChat Official Account(微信公众号):猿说python
    @Github:www.github.com
    @File:my_name.py
    @Time:2019/10/14 22:02
    @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    """
    
    # 定义一个函数并打印 __name__
    def  prit_name():
        print("my_name.py __name__:",  __name__)
    
    if  __name__  ==  "__main__":
        prit_name()
    

      b.新建一个 python_main.py 文件,作为启动文件 (Ctrl+Shift+F10)

    # 导入 my_name 模块
    import  my_name
    
    # 定义一个函数并打印 __name__
    def  prit_name():
    
        my_name.prit_name()
        print("python_main.py __name__:",  __name__)
    
    if  __name__  ==  "__main__":
        prit_name()
    

    输出结果:

    my_name.py __name__:  my_name
    python_main.py __name__:  __main__
    

      由此可见,作为启动文件 python_main.py ,该文件的内置属性 name 等于 “main”,而my_name.py 作为导入模块,该模块的 name 等于文件名(也称模块名字),所以my_name.py 中的 表达式 if name == “main” 并不成立!

      当直接将my_name.py作为启动文件时 (Ctrl+Shift+F10),输出:

    my_name.py __name__:  __main__
    

      如果py文件作为模块被导入(import),那么__name__就是该py文件的文件名(也称 模块名);

      如果py文件直接运行时(Ctrl+Shift+F10),那么__name__默认等于字符串”__main__”;

    废话多

    二.作用

      1.name == “main” 作为启动py文件的main函数入口

      2.一个项目中必然会包含多个模块文件,每个模块文件在自己写完代码之后会做一些简单的测试用于检测bug 或者 对自己的函数调用写一个简单的示例,而恰到好处的是:__name__ == “__main__” 既不会影响你的测试代码,也不会影响别人调用你的接口函数。

    惊喜

    猜你喜欢:

      1.python模块

      2.python异常处理

      3.python return逻辑运算表达式

      4.python 字典推导式

      5.python 列表推导式

      转载请注明猿说Python » python name == “main” 详细解释



      技术交流、商务合作请直接联系博主,微信扫码或搜索:猿说python

    python教程公众号

    相关文章

      网友评论

          本文标题:27.python __name__ == ‘__main__’

          本文链接:https://www.haomeiwen.com/subject/pjxuoctx.html