Python __name__ == ‘__main__’详细解释

ChatGPT 3.5 国内中文镜像站免费使用啦

​零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门


      学习过 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(个人博客地址): www.codersrc.com
@File:Python __name__ == ‘__main__’.py
@Time:2021/04/24 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
 
"""

# 定义一个函数并打印 __name__
def prit_name():
    print("my_name.py __name__:", __name__)

if __name__ == "__main__":
    prit_name()

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

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python __name__ == ‘__main__’.py
@Time:2021/04/24 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
 
"""


# 导入 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 for循环
  2. Python 字符串
  3. Python 列表list
  4. Python 元组tuple
  5. Python 字典 dict
  6. Python 条件推导式
  7. Python 列表推导式
  8. Python 字典推导式
  9. Python 函数声明和调用
  10. Python 不定长参数 *argc/**kargcs
  11. Python 匿名函数 lambda
  12. Python return 逻辑判断表达式
  13. Python 字符串/列表/元组/字典之间的相互转换
  14. Python 局部变量和全局变量
  15. Python type 函数和 isinstance 函数区别
  16. Python is 和 == 区别
  17. Python 可变数据类型和不可变数据类型
  18. Python 浅拷贝和深拷贝
ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞3 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容