Python __name__ == ‘__main__’详细解释

​零基础 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 浅拷贝和深拷贝
未经允许不得转载:猿说编程 » Python __name__ == ‘__main__’详细解释
喜欢(3) 打赏

评论抢沙发

评论前必须登录!

不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!!

开始学习

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏