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

相关推荐
带娃的IT创业者12 分钟前
如何开发一个教育性质的多线程密码猜测演示器
网络·python·算法
luckys.one6 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
大翻哥哥7 小时前
Python 2025:量化金融与智能交易的新纪元
开发语言·python·金融
zhousenshan9 小时前
Python爬虫常用框架
开发语言·爬虫·python
IMER SIMPLE9 小时前
人工智能-python-深度学习-经典神经网络AlexNet
人工智能·python·深度学习
CodeCraft Studio9 小时前
国产化Word处理组件Spire.DOC教程:使用 Python 将 Markdown 转换为 HTML 的详细教程
python·html·word·markdown·国产化·spire.doc·文档格式转换
专注API从业者10 小时前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
java1234_小锋10 小时前
[免费]基于Python的协同过滤电影推荐系统(Django+Vue+sqlite+爬虫)【论文+源码+SQL脚本】
python·django·电影推荐系统·协同过滤
看海天一色听风起雨落11 小时前
Python学习之装饰器
开发语言·python·学习
XiaoMu_00111 小时前
基于Python+Streamlit的旅游数据分析与预测系统:从数据可视化到机器学习预测的完整实现
python·信息可视化·旅游