if __name__ == __main___一文带你弄懂python中if __name__ == '__main__'

b5b635c610d0c328434ac7a9129617a1.png

我们在python模块那章节的学习,有所接触到if __name__ == '__main__'这个概念。当时我们只是大概描述了一番,不少伙伴还是有所困惑,今天就让我们通过实际例子去讲解这条语句到底有何含义。一个python文件有两种用途,一种被当主程序、脚本执行,另一种被当模块导入,为了区别同一个文件的不同用途,每个py文件都内置了__name__变量,该变量在py文件被当做脚本执行时赋值为“__main__”,在py文件被当做模块导入时赋值为模块名。

如模块my_module.py中,可以在文件末尾基于__name__在不同应用场景下值的不同来控制文件执行不同的逻辑,如下所示:

#encoding:UTF-8#本文件为:my_module.py...if __name__ == '__main__':    my_module.py被当做脚本执行else:    my_module.py被当做模块导入时执行

首先建立一个python文件,如test1.py,文件代码如下所示:

#encoding:UTF-8#本文件名为:test1.pydef print_hello():    print("欢迎关注公众号:浩道linux")print("本公众号给大家分享最有趣最实用的linux、python知识!")#打印__name__的值print(__name__)if __name__ == '__main__':    print("test1.py当做脚本执行执行!!!")else:    print("test1.py被当做模块导入时执行。。。")

运行以上代码,结果如下所示:

3b79d2dbdb35e0fa8ceeea9535eb65a9.png

从结果看出,当执行test1.py本身文件时,变量__name__的值为__main__。

其次,再创建一个python文件,如test2.py,文件代码如下:

#encoding:UTF-8#本文件名为:test2.py#导入模块test1import test1test1.print_hello()print("代码执行结束********")

执行test2.py文件,结果如下所示:

f233cf4b5b5cb1cd11b222b4c65b1252.png

通过模块那篇知识的学习,不难看出test2.py所执行原理以及结果。当test1.py被当成模块导入时,__name__的值由__main__变成了test1。

相信通过这两个例子的比较,已经弄懂if __name__ == '__main__'的用法了吧。用到该语句的场景一般就是我们写完一个函数代码,自己想调用执行测试,而又不希望自己写的代码被当成模块导入时,执行我们的测试代码。大家如果还有疑问,可以留言讨论,希望能给大家带来解惑。

往期内容回顾:

干货之六:python常见面试题,你会多少?

平时你输入的验证码,竟是这么简单就实现了

python常见模块之time模块

python实战项目之---童年小游戏(附源码)

e70b82119f0787aa4cd3f2130027aaaa.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值