前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python代码中的if name == ‘__main__‘的作用是什么

Python代码中的if name == ‘__main__‘的作用是什么

作者头像
润森
发布2022-09-22 16:23:26
4360
发布2022-09-22 16:23:26
举报
文章被收录于专栏:毛利学Python

要搞清楚这个问题,要知道以py作为后缀的Python代码文件,有两种使用方式,第一种方式是直接运行,另一种方式是作为模块被别的py文件导入。当采用第一种方式直接运行自身时,__name__的值为__main__;当采用第二种方式被别的模块导入时,其__name__的值为其文件名(通常也称为模块名); 举例实测如下:用PyCharm新建一个Python工程后,新建两个py文件,文件名分别为AAA.py和BBB.py

然后在AAA.py中写上如下代码:

代码语言:javascript
复制
print('当前AAA.py中__name__的值为:', __name__)

在BBB.py中写上如下代码:

代码语言:javascript
复制
import AAA

然后分别运行这两个Python文件,结果如下:运行AAA.py的结果如下:

运行BBB.py的结果如下:

这个示例除了应证了上面说的py文件的两种使用方式,还表明使用import导入py文件/模块时,这个被导入的py文件中没有缩进的代码会被全部执行一遍。这样就带来了一个问题,如果我在导入模块AAA.py时如果有想代码不想被执行,那么该怎么做呢?语句“if name == ‘__main__’”就能实现这个作用,具体怎么用,有朋友看了上面的例子应该已经明白了,如果还不明白,请看下面这个例子:修改上面的AAA.py的代码为如下代码:

代码语言:javascript
复制
print('\n')
print('当前AAA.py中__name__的值为“{}”'.format(__name__))
if __name__ == '__main__':
    print('\n')
    print('当前运行的文件是AAA.py')
else:
    print('\n')
print('当前AAA.py是作为模块被其它py文件导入')

再次分别运行AAA.py和BBB.py,结果分别如下:

可见通过语句“if name == ‘__main__’,就能判断出一个py文件是直接运行还是作为模块文件被别的py文件导入的,进而通过这个判断实现一些代码的不被执行。 那么通常来说哪些代码不希望被执行呢?当文件被作者定义为一个模块时,里面难免含有一些测试代码,当模块被import时,这些代码是不希望被执行的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小刘IT教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档