python——实例详细弄懂if __name__ == ‘__main__‘用法

简介: 在python慢慢学习路中,经常会遇到if __name__ == "__main__",而且会发现不写这句话,代码依旧可以执行。心里就有一百个疑问,通过大神指导,小编终于理解啦!今天小编就通过具体的例子详细介绍为什么代码中会加上这句话。

本文转载:
https://xiaochuhe.blog.csdn.net/article/details/122395447?spm=1001.2014.3001.5502
前言:在python慢慢学习路中,经常会遇到if name == "__main__",而且会发现不写这句话,代码依旧可以执行。心里就有一百个疑问,通过大神指导,小编终于理解啦!今天小编就通过具体的例子详细介绍为什么代码中会加上这句话。
目的:代码中加上if name == '__main__'的目的,也是这篇文章最终要阐述的:

用来控制.py文件在不同的应用场景下执行不同的逻辑,也可以在if name == '__main__'里面加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!
一、发散思维理解python文件

百度这么解释python 的:

Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python 也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。

注意这个关键词:解释

其实一个编写好的一个python文件可以有两种用途:

一:脚本,一个文件就是整个程序,用来被执行(当前执行文件)
二:模块,文件中存放着一堆功能,用来被导入使用

尤其第二个模块,所以我们经常会遇到pip install 各种模块其实就是python主目录下没有这个脚本而已,下载了就是放在主目录下方便运行的,细心的朋友们下次下好模块后可以去看看!
二、全方面理解全局变量__name__
通透下面两句话:
1.当文件被当做脚本执行时:__name__ 等于'__main__'
2.当文件被当做模块导入时:__name__等于文件名(模块名)

举例说明:同一个目录下创建两个py文件,一个是test1.py,一个是test2.py。

举例当文件被当作脚本执行时,在test1.py里面输入下面代码:

print (__name__)

test1.py输出结果:

举例当文件被当作模块导入时,test1.py里面为空,test2.py里面输入下面代码:

import test1 #导入test1模块
print (test1.__name__)  #输出test1.py的文件名,也就是模块名

test2.py输出结果:图片.png
三、实例详细弄懂if name == '__main__'用法

举例说明:同样同一个目录下创建两个py文件,一个是test1.py,一个是test2.py。
先举例说明,不加if name == '__main__',把test1.py当作模块导入

test1.py代码如下:

from colorama import Fore
print (Fore.YELLOW + "天不生我李淳罡,剑道万古如长夜!")

输出结果:图片.png

test2.py代码如下:

from colorama import Fore
import test1 #导入test1模块
print (Fore.BLUE + "杀世子,夺青鸟!")  #输出test1.py的文件名

输出结果:图片.png

思考:为什么明明只想打印出’杀世子,夺青鸟!',却把’天不生我李淳罡,剑道万古如长夜‘也打印出来了?

最后举例说明,加上if name == '__main__',依旧把test1.py当作模块导入

test1.py代码如下:

from colorama import Fore
if __name__ == '__main__':  
    print (Fore.YELLOW + "天不生我李淳罡,剑道万古如长夜!")

输出结果:图片.png

test2.py代码如下:

from colorama import Fore
import test1 #导入test1模块
print (Fore.BLUE + "杀世子,夺青鸟!")  #输出test1.py的文件名

输出结果:图片.png

思考:此时test1.py输出结果’天不生我李淳罡,剑道万古如长夜‘,为什么又不在test2.py里面出现了?

回头再看,文章所阐述的目的,相信大家都懂了,原创不易,切勿抄袭,谢谢!

相关文章
|
13天前
|
Java C# C++
如何简单地理解Python中的if __name__ == '__main__'
本文介绍了Python中`__name__ == '__main__'`的作用和原理,解释了它如何作为程序入口控制代码执行。当.py文件直接运行时,`if __name__ == '__main__'`下的代码块会被执行;而当文件作为模块被导入时,该代码块不会执行。此外,文章还探讨了`__name__`变量在包结构中的作用,以及`__main__.py`文件与`python -m`命令的关系,详细说明了不同运行方式对模块路径的影响。
58 18
|
3月前
|
Python
Python三引号用法与变量详解
本文详细介绍了Python中三引号(`"""` 或 `'''`)的用法,包括其基本功能、如何在多行字符串中使用变量(如f-string、str.format()和%操作符),以及实际应用示例,帮助读者更好地理解和运用这一强大工具。
162 2
|
4月前
|
缓存 测试技术 开发者
深入理解Python装饰器:用法与实现
【10月更文挑战第7天】深入理解Python装饰器:用法与实现
38 1
|
4月前
|
传感器 大数据 数据处理
深入理解Python中的生成器:用法及应用场景
【10月更文挑战第7天】深入理解Python中的生成器:用法及应用场景
157 1
|
4月前
|
存储 大数据 Python
案例学Python:filter()函数的用法,高级!
`filter()`函数是Python中处理序列数据的强大工具,它允许我们高效地根据条件过滤元素。通过结合匿名函数、常规函数或直接利用Python的内置逻辑,`filter()`提供了灵活且高效的过滤机制,尤其在大数据处理和内存敏感的应用中展现出其价值。掌握 `filter()`的使用,不仅能提升代码的可读性和效率,还能更好地适应Python的函数式编程风格。
83 2
|
4月前
|
Python
深入了解Python中星号变量的特殊用法
深入了解Python中星号变量的特殊用法
46 0
|
4月前
|
PyTorch 测试技术 算法框架/工具
Python中Thop库的常见用法和代码示例
肆十二在B站分享了关于THOP(Torch-OpCounter)的实战教学视频。THOP是一个用于计算PyTorch模型操作数和计算量的工具,帮助开发者评估模型复杂度和性能。本文介绍了THOP的安装、使用方法及基本用例,包括如何计算模型的FLOPs和参数量。
255 0
|
4月前
|
SQL 关系型数据库 MySQL
Python中Pymysql库的常见用法和代码示例
`pymysql` 是一个用于连接 MySQL 数据库的 Python 库,支持 SQL 查询的执行和结果处理。通过 `pip install pymysql` 安装后,可使用 `connect()` 方法建立连接,`cursor()` 创建游标执行查询,包括数据的增删改查,并通过 `commit()` 和 `rollback()` 管理事务,最后需关闭游标和连接以释放资源。
210 0
|
4月前
|
计算机视觉 Python
Python中Pillow库的常见用法和代码示例
Pillow是Python中广泛使用的图像处理库,支持丰富的图像操作功能,包括但不限于打开、保存、缩放、裁剪、旋转、调色等。本文通过一系列示例介绍Pillow的基本用法,涵盖图像的加载与显示、尺寸调整、裁剪与旋转、亮度调整、格式转换、滤镜应用、图像合成及像素级操作等。首先需通过`pip install pillow`安装库,随后可通过导入`PIL.Image`等模块开始图像处理任务。无论是初学者还是进阶用户,都能从Pillow提供的强大功能中获益。
169 0
|
4月前
|
Python
Python pip 操作的几种用法
Python pip 操作的几种用法
89 0

热门文章

最新文章

推荐镜像

更多