浅谈 Python中if __name__ == ‘__main__‘:的工作原理

为了理解if __name__ == '__main__':的工作原理,我们需要先了解Python中的特殊变量__name__

每个Python模块都有一个内置的变量__name__。这个变量的值取决于如何执行模块:

  1. 如果模块是被直接运行的 (例如,你使用命令python myscript.py在命令行中执行脚本),那么模块的__name__变量会被设置为'__main__'
  2. 如果模块是被导入的 (例如,通过import myscript语句),那么模块的__name__变量会被设置为模块的名字(在这个例子中是'myscript')。

考虑以下情境:

假设我们有一个名为myscript.py的文件,其中包含以下内容:

python 复制代码
def some_function():
    print("Function in myscript!")

print("Top-level in myscript!")

if __name__ == '__main__':
    print("myscript is being run directly!")
else:
    print("myscript is being imported into another module!")
  • 直接运行模块 :如果我们在命令行中使用python myscript.py直接运行此模块,输出将会是:

    复制代码
    Top-level in myscript!
    myscript is being run directly!
  • 导入模块 :假设我们在另一个Python脚本中(例如,another_script.py)使用import myscript导入此模块。输出将会是:

    复制代码
    Top-level in myscript!
    myscript is being imported into another module!

使用if __name__ == '__main__':允许我们的Python脚本既可以独立运行,也可以作为模块导入,而不会执行不需要的代码。这提供了一种有效的方式来组织和封装代码,确保只有当模块直接运行时,某些代码(如单元测试或特定的脚本逻辑)才会被执行。

相关推荐
银河邮差35 分钟前
python实战-用海外代理IP抓LinkedIn热门岗位数据
后端·python
第二只羽毛1 小时前
遵守robots协议的友好爬虫
大数据·爬虫·python·算法·网络爬虫
好难取啊1 小时前
[python学习]案例01:随机验证码与账号密码修改
python
秋邱1 小时前
价值升维!公益赋能 + 绿色技术 + 终身学习,构建可持续教育 AI 生态
网络·数据库·人工智能·redis·python·学习·docker
2501_941144422 小时前
Python + C++ 异构微服务设计与优化
c++·python·微服务
ChoSeitaku2 小时前
线代强化NO19|矩阵的相似与相似对角化
python·线性代数·矩阵
sniper_fandc2 小时前
Coze智能体实现人生模拟器
python·ai·agent·coze
white-persist3 小时前
【攻防世界】reverse | Reversing-x64Elf-100 详细题解 WP
c语言·开发语言·网络·python·学习·安全·php
FeiHuo565153 小时前
微信个人号开发中如何高效实现API二次开发
java·开发语言·python·微信
love530love3 小时前
【保姆级教程】Windows + Podman 从零部署 Duix-Avatar 数字人项目
人工智能·windows·笔记·python·数字人·podman·duix-avatar