if __name__ == '__main__': 是 Python 里最经典、最常用的一句代码,作用一句话概括:
控制一段代码,只在「直接运行这个文件」时执行,被别的文件 import 导入时不执行。


1. 先搞懂 __name__ 是什么

__name__ 是 Python 内置的一个特殊变量,它的值取决于你怎么运行这个文件

情况1:直接运行这个文件

比如你写了 a.py,然后在终端/IDE 直接运行:

python a.py

这时 Python 会自动把 __name__ 设为:

__name__ == '__main__'

情况2:这个文件被别的文件 import

比如在 b.py 里写:

import a

这时 a.py 里的 __name__ 就会变成:

__name__ == 'a'

2. if __name__ == '__main__': 到底干嘛?

它的作用就是:

这里面的代码,只在直接运行时执行,被导入时不执行

举个最简单例子

test.py

def hello():
    print("Hello")

# 下面这段只在直接运行 test.py 时才跑
if __name__ == '__main__':
    print("直接运行了这个文件")
    hello()

① 直接运行

python test.py

输出:

直接运行了这个文件
Hello

② 被别的文件 import

新建 other.py

import test
test.hello()

运行 other.py,只会输出:

Hello

if __name__ == '__main__': 里的内容不会执行


3. 实际开发为什么要用它?

  1. 避免测试代码被意外执行
    你写模块时,经常会加几行测试代码。不加这句,别人一 import,测试代码就自动跑了,会报错或乱输出。

  2. 区分「模块功能」和「脚本运行」

    • 被 import:当作库/模块使用
    • 直接运行:当作可执行脚本使用
  3. 方便写可独立运行又能被导入的工具文件
    很多 Python 工具文件、爬虫、数据分析脚本都这么写。


4. 超通俗总结

  • __name__ 就是 Python 给文件的身份标签
  • 直接运行 → 标签是 '__main__'
  • 被导入 → 标签是文件名
  • if __name__ == '__main__':
    只在直接跑这个文件时才执行里面内容

更多推荐