目录

  • 一.简介

    • 1.__name__
    • 2.’__main__’
    • 3.__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__’详细解释

Python __name__ == ‘__main__’详细解释-Python零基础入门教程相关推荐

  1. Python爬虫超详细讲解(零基础入门,老年人都看的懂)!

    注重版权,转载请注明原作者和原文链接 作者:码农BookSea 原文链接:https://blog.csdn.net/bookssea/article/details/107309591 先看后赞,养 ...

  2. Python 进程 Process 模块 - Python零基础入门教程

    目录 一.Python 进程 Process 简介 二.Python 进程 Process 模块 三.Python 进程 Process 函数介绍 四.Python 进程 Process 使用 五.P ...

  3. Python 线程池 ThreadPoolExecutor(二) - Python零基础入门教程

    目录 一.Python 线程池前言 二.Python 线程池 ThreadPoolExecutor 常用函数 1.线程池 as_completed 函数使用 2.线程池 map 函数使用 3.线程池 ...

  4. Python 线程池 ThreadPoolExecutor(一) - Python零基础入门教程

    目录 一.Python 线程池前言 二.Python 线程池原理 三.Python 线程池 ThreadPoolExecutor 函数介绍 四.Python 线程池 ThreadPoolExecuto ...

  5. Python 线程优先队列 PriorityQueue - Python零基础入门教程

    目录 一.Python 线程队列 Queue 分类 二.Python 线程优先队列 PriorityQueue 简介 三.Python 线程优先队列 PriorityQueue 函数介绍 四.Pyth ...

  6. Python 线程队列 LifoQueue – LIFO - Python零基础入门教程

    目录 一.Python 线程队列 Queue 分类 二.Python 线程先进后出队列 LifoQueue 简介 三.Python 线程先进后出队列 LifoQueue 函数介绍 四.Python 线 ...

  7. Python 线程队列 Queue – FIFO - Python零基础入门教程

    目录 一.Python 线程队列分类 二.Python 线程先进先出队列 Queue 简介 三.Python 线程先进先出队列 Queue 常用函数 四.Python 线程先进先出队列 Queue 使 ...

  8. Python 进程 Process 与线程 threading 区别 - Python零基础入门教程

    目录 一.Python 线程 threading 创建 二.Python 进程 Process 创建 三.Python 进程 Process 和线程 threading 区别 四.Python 进程 ...

  9. Python 线程信号量 semaphore - Python零基础入门教程

    目录 一.Python 线程信号量 semaphore 简介 二.Python 线程信号量 semaphore 原理 三.Python 线程信号量 semaphore 函数介绍 四.Python 线程 ...

最新文章

  1. python09-魔法方法
  2. CSS Guide Lines
  3. php命名空间划重点
  4. python基础语法手册-python语法大全,python语法手册
  5. 金蝶K3-航天信息税控发票开票软件接口程序
  6. GreenSock Animation Platform
  7. 电影院购票系统ssm (含论文)
  8. iOS8 UIApplicationOpenSettingsURLString
  9. Python 最常见的 170 道面试题解析:2019 最新
  10. mimax 刷原生android,小米手机想爽刷原生安卓?不愁!
  11. django实现websocket作为安卓开发后台(软件课设,oo聊天)
  12. 使用Factory IO连接TIA Portal 自动化仿真
  13. 适合小规模培训、带货的群直播是怎样的呢?
  14. CenterPoint 学习笔记
  15. 第三方微信+支付宝个人免签支付源码
  16. NAT地址转换(超详细解说版)
  17. 关于路由的这10个问题,网络工程师们应该掌握
  18. 第二篇 树莓派基本外设基础篇
  19. 平台全局 css代码,css全局样式基础代码(示例代码)
  20. 开源OA系统门户:企业信息互通,集成办公

热门文章

  1. Flink 1.12 资源管理新特性回顾
  2. 吉麦新能源与联想签订战略合作协议,共同拥抱智能网联汽车升维时代
  3. 13种重要的云原生工具,让交付过程更快
  4. 2019年中国IaaS公有云市场排名及份额出炉
  5. 10个业界最流行的Kubernetes发行版
  6. 分布式精华问答 | 秒懂分布式与集群的区别
  7. 百度宣布架构调整,BAT要在To B业务重开一局
  8. Cloud一分钟 | 成本大增致谷歌财报蒙尘;Gartner发数据库魔力象限:阿里云成为黑马...
  9. react中类组件this指向
  10. lol模型导入ue4_Houdini amp; UE4 程序化建模——石头(一)基础工作流