浅谈 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脚本既可以独立运行,也可以作为模块导入,而不会执行不需要的代码。这提供了一种有效的方式来组织和封装代码,确保只有当模块直接运行时,某些代码(如单元测试或特定的脚本逻辑)才会被执行。

相关推荐
每天吃饭的羊32 分钟前
Chrome DevTools MCP
python
水獭比特2 小时前
localhost 不是安全边界:给 Agent Web 入口补上四层门禁
人工智能·python
Generalzy2 小时前
Whisper + VAD + TTS:一套完整的 Python 本地语音处理流水线
python·whisper·语音识别
qpsj2 小时前
让 LLM 控制 AutoCAD/ZWCAD:COM 自动化 + MCP 封装
python·llm
赟爸3 小时前
直播切片素材杂乱不好复用,易元AI要怎么处理
大数据·人工智能·python
怪奇云呼军3 小时前
从声音特征到 CRM 回流:闪电智能 Voice Agent 沟通策略自适应系统 v1 实战
android·人工智能·python·音视频·语音识别
jufeng13073 小时前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 6 篇】
python·ai agent·记忆系统
kevinnett4 小时前
别再把模型地址写死了:用 Python 设计一个可切换的 LLM 调用层
python
天天进步20155 小时前
Python全栈项目--协同办公平台
开发语言·python
GEOshijie1235 小时前
GEO服务商算法适配承诺怎么验收?48小时响应的合同化考核方案
人工智能·python