当前位置: 首页 > news >正文

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

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

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

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

考虑以下情境:

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

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

http://www.lryc.cn/news/113763.html

相关文章:

  • 【力扣】344. 反转字符串 <首尾指针>
  • Kubectl 详解
  • 华为OD面试记录
  • 电源控制--品质因素Q值全解
  • 实际工作中通过python+go-cqhttp+selenium实现自动检测维护升级并发送QQ通知消息(程序内测)
  • EC200 CAT1 拨号PPP
  • 外网通过ipv6访问家里设备
  • docker 如何使用代理
  • Go和Java实现装饰器模式
  • Android中级——RemoteView
  • SpringBoot核心内容梳理
  • Benchmarking Augmentation Methods for Learning Robust Navigation Agents 论文阅读
  • 面试题:HTTP Code码及应用场景分析
  • The ‘kotlin-android-extensions‘ Gradle plugin is no longer supported.
  • vi 编辑器入门到高级
  • 【大数据】Flink 详解(二):核心篇 Ⅰ
  • Day 75:通用BP神经网络 (2. 单层实现)
  • PHP序列化,反序列化
  • Android google admob Timeout for show call succeed 问题解决
  • EFLFK——ELK日志分析系统+kafka+filebeat架构
  • C# MVC controller 上传附件及下载附件(笔记)
  • 安装element-plus报错:Conflicting peer dependency: eslint-plugin-vue@7.20.0
  • 【操作系统】进程和线程对照解释
  • 4用opencv玩转图像2
  • Swagger的使用
  • python高阶技巧
  • Linux和Windows安装MySQL服务
  • Vue3 第四节 自定义hook函数以及组合式API
  • 门面模式(C++)
  • ASP.NET Core SignalR