Python中if __name__ == "__main__"的解释

liftword5个月前 (12-13)技术文章60


对于很多编程语言来说,程序都必须要有一个入口,比如 C 语言需要有一个 main 函数作为程序的入口,即程序的运行会从 main 函数开始。

而 Python 是脚本语言,不像编译型语言那样,先将程序编译成二进制再运行,而是从脚本第一行开始运行,动态的逐行解释运行,所以没有统一的入口。

一个 python 文件通常有两种使用方法:

  • 一是作为脚本直接执行;
  • 二是 import 到其他的 python 脚本中被调用执行。

而 if __name__ == "main" 的作用就是控制这两种情况执行代码的过程:

  • 当python文件被直接执行时,if __name__ == "__main__"之下的代码块将被运行;
  • 当python文件以模块形式被导入时,if __name__ == "__main__"之下的代码块不被运行。

举例说明

比如有一个 constpi.py,内容如下,直接执行该文件(python constpi.py),则输出PI的值,如下图所示:

现在有另外一个 area.py 文件,计算圆的面积,需要用到 constpi.py 中的 PI。因此需要把 constpi.py 中的 PI 导入到 area.py 中。运行 area.py,则如下图所示。

背后的原理

每个python文件都包含内置的变量 __name__,为了解 __name__ 到底是什么,可以在 constpi.py 把 __name__ 打印出来,如下图所示,可以发现:

  • 当 constpi.py 被直接运行时,__name__ 就是 “__main__”,因此执行其后的代码;
  • 而 constpi.py 被import到其他文件时,__name__ 就是 “constpi”,因此其后的代码不执行。

相关文章

教你Python字典的妙用,消除繁琐的if判断

根据不同的条件进行不同的计算或操作,是很常见的需求。Python 有 if 语句可以实现。但是一旦分支很多,多个 if 就是使你眼花缭乱。我们有许多技巧(套路)来简化这一过程。 我会一连几篇文章,从简...

Python- 第 15 天 - IF 语句 - 核心 P原理

Python 中的条件语句概述:编程通常涉及检查条件并根据这些条件决定采取什么行动。Python if 语句:允许检查程序的当前状态并适当地响应该状态。目标: 学习编写允许检查相关条件的条件测试。将编...

python小课堂37 - 你并没有真正的理解 if name 的作用

前言在 Python 中,我们经常会看到if __name__ == '__main__': 那么你真的理解此写法的作用吗?今天我们就来聊一聊它真正的含义。笔者最喜欢的就是用示例讲明白...

「Python条件结构」嵌套if:求一元二次方程的根

功能要求从键盘上读取一元二次方程的系数,求一元二次方程式ax2 + bx + c = 0的根,并显示在控制台。实例代码import math# 从键盘上读取一元二次方程的系数a,b,ca, b, c...