Python代码中if __name__ == ‘__main__‘的作用是什么?
·
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. 实际开发为什么要用它?
-
避免测试代码被意外执行
你写模块时,经常会加几行测试代码。不加这句,别人一 import,测试代码就自动跑了,会报错或乱输出。 -
区分「模块功能」和「脚本运行」
- 被 import:当作库/模块使用
- 直接运行:当作可执行脚本使用
-
方便写可独立运行又能被导入的工具文件
很多 Python 工具文件、爬虫、数据分析脚本都这么写。
4. 超通俗总结
__name__就是 Python 给文件的身份标签- 直接运行 → 标签是
'__main__' - 被导入 → 标签是文件名
if __name__ == '__main__':
→ 只在直接跑这个文件时才执行里面内容
更多推荐
所有评论(0)