前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >if __name__ == '__main__': 到底是个啥?

if __name__ == '__main__': 到底是个啥?

作者头像
Crossin先生
发布2019-11-13 19:26:09
23.7K0
发布2019-11-13 19:26:09
举报

if __name__ == '__main__'

很多 Python 相关的教程

都是在这里一笔带过

有些比较好奇的朋友

想知道为啥要这样写

刚好有人问起

今天就来告诉你为啥

当你在写 .py 的时候

一般是以两种方式存在的

1、作为脚本直接运行

2、作为模块给别人导入

你的代码在被执行的时候

Python 解释器会先去

读取你的 Python 代码

然后定义一些全局的内置变量

而我们常常写的这个 __name__

就是其中的变量之一

如果判断出

__name__ 的值是 __main__

就说明这里是程序入口

而非被别的 py 文件 import

这里的运行结果是

程序从上到下按顺序运行

先执行的是打印 name

这和 java 有点不同

没有所谓的主函数

代码语言:javascript
复制
public static void main(String[] args){…}

那么这个 __name__ 是来干嘛的

if __name__ == '__main__' 去掉

不也能照样运行

我们再定义一个方法

专门用来打印变量 __name__ 的值

直接运行

可以看到 __name__ 的值就是 '__main__'

接着换种方式:

我们把这个文件命名为 A.py

作为模块给 B.py 导入

直接 import A

然后运行

运行结果

可以看到

A模块的调用都被执行了

但有一点很不同的是

这里的 name 值是 A

而不再是 __main__

到这里,我们就发现了

当 .py 直接运行的时候

__name__的值是__main__

而当 .py 被当作模块导入的时候

__name__的值是模块的名称

我们接着修改一下 A.py

本来是这样的

现在改成这样

再运行 B.py

这次就不会运行到 A 的调用了

所以你的 .py 可以

作为自己的脚本运行

在 __main__ 中做一些测试

或者本身程序的运行

当然你也可以

使用你的 .py 作为模块给别人使用

给别人提供一些便利

为了不让别人一导入你的模块

就直接运行整个脚本

那么使用

if __name__ == '__main__'

其中的代码就不会在被 import 时被执行。

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

本文分享自 Crossin的编程教室 微信公众号,前往查看

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

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

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