什么是 __name__ 和 __main__ ?

为了解释这个问题,我们首先构造一个程序文件module1.py,内容如下:

def func1():print('hello')print('the __name__ of module1 is: ' + __name__)if __name__ == '__main__': # 很显然,这是一个条件语句func1()print('Now it\'s in module1')

当我们运行module1.py时,输出的结果为:

hello
the __name__ of module1 is: __main__
Now it's in module1

由输出可以知道,此时__name__就等于__main__。其实,python代码在每次运行时,就会有一些初始化好的内置变量,而__name__就是其中之一。当在本文件(当前程序)中运行时,__name__就等于__main__,否则__name__等于所在文件/模块的名称。

与module1.py在同一文件夹下,我们构造module2.py,内容如下:

import module1module1.func1()print('the __name__ of module2 is: ' + __name__)

运行modul2.py,输出为

hello
the __name__ of module1 is: module1
the __name__ of module2 is: __main__

上述输出结果证明了在当前环境下,func1中的__name__等于它所在的模块/文件名,即module1;而当前文件的__name__等于__main__

什么是 if __name__ == ‘__main__’ ?

现在这个问题就很简单了。这条语句的意思就是:检查当前环境下的__name__是否等于__main__,如果等于,就执行if语句体的内容。

if __name__ == ‘__main__’ 有什么用?

if __name__ == '__main__'这条语句只有在__name__所对应的文件下才会满足条件,所以,if语句体(body)的内容也只有在对应文件下才会执行,而这一特点在python设计模块(module)时带来极大的便利。

当我们设计好一个模块后,我们想运行一些测试代码,而这些测试代码我们不希望在别的文件import本模块时引入,造成干扰。解决方案就是我们把测试代码放入if __name__ == '__main__'之后,这样,只有在运行测试本模块(本文件)时,测试代码才会执行。

Python中的if __name__ == ‘__main__‘什么意思?相关推荐

  1. 如何简单地理解Python中的if __name__ == '__main__'

    如何简单地理解Python中的if __name__ == '__main__' 文章目录: 一.摘要 二. 程序入口 虽然已经知道这个具体的用法,但是这篇文章有很多细节写的还是很好,决定转载一下,日 ...

  2. Python 中的 if __name__ == __main__ 该如何理解

    Python 中的 if __name__ == "__main__" 该如何理解 原文链接: http://blog.konghy.cn/2017/04/24/python-en ...

  3. 2020-12-11 Python中的 if __name__ == “__main__“

    Python中的 if __name__ == "__main__" 对于Python初学者来说,在看别人代码时经常会看到if __name__ == "__main__ ...

  4. python中使用if __name__ == '__main__':

    引子 在python中,假设在一个test1.py的模块中定义了一个foo函数,然后调用函数foo进行测试的时候会产生一个内存空间.当你把这个模块导入到test2.py模块中,接下来如果在test2. ...

  5. Python中的if __name__ == ‘__main__‘

    if name == 'main'的意思是:当.py文件被直接运行时,if name == 'main'之下的代码块将被运行:当.py文件以模块形式被导入时,if name == 'main'之下的代 ...

  6. 如何快速简单粗暴地理解Python中的if __name__ == ‘__main__‘

    1. 摘要 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明'):在你自己眼中,你是你自己(__name__ == '_ ...

  7. 解惑(二)----- 如何通俗地理解Python中的if __name__ == ‘__main__‘

    1. 摘要 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明'):在你自己眼中,你是你自己(__name__ == '_ ...

  8. 简单理解Python中的if __name__ == '__main__'

    1. 摘要 通俗的理解__name__ == 'main':假如你叫小明.py,在朋友眼中,你是小明(name == '小明'):在你自己眼中,你是你自己(name == 'main'). if na ...

  9. 一个实例告诉你Python中关于 if __name__ == ‘__main__‘ 有何作用

    文章目录 前言 正文 .py源文件 实例现象 运行原理 前言 相信大部分开发者对于"程序入口"这个概念并不陌生.对于很多编程语言来说,程序都必须要有一个入口,比如既保留C语言面向过 ...

  10. Python 中的 if __name__ == '__main__' 该如何理解

    程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等.如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要 ...

最新文章

  1. android 53 ContentProvider内容提供者
  2. 性能调优之工具---perf
  3. Linux快捷键及文件和目录的操作
  4. STM32CubeMX使用方法及功能介绍
  5. 2014025631嵌入式程序设计第一周学习总结
  6. springboot集成Spring Security oauth2(八)
  7. ubuntu18.04系统ros melodic 安装orbslam2,Astra相机的ROS环境
  8. 银行家算法检测死锁c语言,[算法]操作系统进程调度与通信算法 Dijkstra银行家算法 C语言实现 | 李大仁博客...
  9. 2.深入分布式缓存:从原理到实践 --- 分布式系统理论
  10. 故障处理,no space left on device!几种可能性?
  11. 【基础教程】基于matlab图像融合总结【含Matlab源码 055期】
  12. Python math.erf() 方法
  13. python for ArcGIS 绘制成都市板块地图
  14. 你知道wps删除空白页的方法吗?进来看看吧
  15. D3D9学习笔记之颜色
  16. java.time.format.DateTimeParseException: Text ‘xxxx-xx-xx xx:xx:xx‘ could not be parsed at index 10
  17. 几何画板是如何证明勾股定理的
  18. C语言:找出10000以内所有的素数(质数)
  19. 双重预防机制数字化系统赋能施工企业安全隐患闭环管理,安全风险分级管控
  20. OceanBase 社区版部署示例

热门文章

  1. WPF 逻辑树和可视化树
  2. EXTJS开发过程遇到的一些问题的小结(转自麦田守望者)
  3. 如何让品牌进入元宇宙
  4. 区块链的出现是否能够挽救岌岌可危的微商?小心那些伪营销精英
  5. Python Gstreamer播放rtsp视频流(海康IPCAM)
  6. table thead tr设置表头背景色未完全覆盖的问题
  7. PDF如何提取其中一页,PDF提取页面的方法
  8. 【Agni-s Philosophy】使用的图形技术解说(后篇)Volume渲染和粒子处理
  9. wordpress中文主题,开源wordpress中文免费主题模板
  10. Word保存高清图片