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

本文解析了Python中if __name__ == '__main__'的作用,包括其在脚本执行与模块导入时的不同表现,以及如何利用这一特性进行调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:在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输出结果:


三、实例详细弄懂if __name__ == '__main__'用法

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

先举例说明,不加if __name__ == '__main__',把test1.py当作模块导入

test1.py代码如下:

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

输出结果:

 test2.py代码如下:

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

输出结果:

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

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

 test1.py代码如下:

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

输出结果:

 test2.py代码如下:

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

输出结果:

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


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

评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaochuhe--kaishui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值