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里面出现了?

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

相关文章
|
2月前
|
Go 调度 Python
Golang协程和Python协程用法上的那些“不一样”
本文对比了 Python 和 Go 语言中协程的区别,重点分析了调度机制和执行方式的不同。Go 的协程(goroutine)由运行时自动调度,启动后立即执行;而 Python 协程需通过 await 显式调度,依赖事件循环。文中通过代码示例展示了两种协程的实际运行效果。
141 7
|
5月前
|
算法 Python
Apriori算法的Python实例演示
经过运行,你会看到一些集合出现,每个集合的支持度也会给出。这些集合就是你想要的,经常一起被购买的商品组合。不要忘记,`min_support`参数将决定频繁项集的数量和大小,你可以根据自己的需要进行更改。
188 18
|
5月前
|
人工智能 数据库连接 API
掌握Python的高级用法:技巧、技术和实用性示例
本文分享了Python的高级用法,包括生成器、装饰器、上下文管理器、元类和并发编程等。生成器通过`yield`实现懒加载序列;装饰器用于增强函数功能,如添加日志或性能分析;上下文管理器借助`with`语句管理资源;元类动态定制类行为;并发编程利用`threading`和`asyncio`库提升任务执行效率。掌握这些高级概念可优化代码质量,解决复杂问题,提高程序性能与可维护性。
119 6
|
6月前
|
Python
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
273 14
|
7月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
6月前
|
开发框架 Java .NET
Python中main函数:代码结构的基石
在Python中,`main`函数是程序结构化和模块化的重要组成部分。它实现了脚本执行与模块导入的分离,避免全局作用域污染并提升代码复用性。其核心作用包括:标准化程序入口、保障模块复用及支持测试驱动开发(TDD)。根据项目复杂度,`main`函数有基础版、函数封装版、参数解析版和类封装版四种典型写法。 与其他语言相比,Python的`main`机制更灵活,支持同一文件作为脚本运行或模块导入。进阶技巧涵盖多文件项目管理、命令行参数处理、环境变量配置及日志集成等。此外,还需注意常见错误如全局变量污染和循环导入,并通过延迟加载、多进程支持和类型提示优化性能。
473 0
|
9月前
|
前端开发 搜索推荐 编译器
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
403 34
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
|
8月前
|
Java C# C++
如何简单地理解Python中的if __name__ == '__main__'
本文介绍了Python中`__name__ == '__main__'`的作用和原理,解释了它如何作为程序入口控制代码执行。当.py文件直接运行时,`if __name__ == '__main__'`下的代码块会被执行;而当文件作为模块被导入时,该代码块不会执行。此外,文章还探讨了`__name__`变量在包结构中的作用,以及`__main__.py`文件与`python -m`命令的关系,详细说明了不同运行方式对模块路径的影响。
552 18
|
7月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
本文来自YashanDB官网,介绍如何处理Oracle客户端sql*plus中使用@@调用同级目录SQL脚本的场景。崖山数据库23.2.x.100已支持@@用法,但旧版本可通过Python脚本批量重写SQL文件,将@@替换为绝对路径。文章通过Oracle示例展示了具体用法,并提供Python脚本实现自动化处理,最后调整批处理脚本以适配YashanDB运行环境。
|
9月前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
197 0
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈

推荐镜像

更多