基本概念

if __name__ == '__main__': 是一个条件判断语句,用于确定当前模块是作为主程序运行,还是被其他模块导入。

__name__ 变量

  • __name__ 是Python的一个内置变量,表示当前模块的名称
  • 当一个模块被直接运行时,__name__ 的值会被设置为 '__main__'
  • 当一个模块被导入到其他模块中时,__name__ 的值就是模块的文件名(不含.py后缀)

这个结构的主要用途有:

  1. 模块的双重用途​:让一个文件既可以作为可执行脚本,也可以作为可导入模块
  2. 防止导入时执行不必要的代码​:避免模块被导入时自动执行测试代码或主程序逻辑

使用示例

# my_module.pydef some_function():print("这是一个函数")if __name__ == '__main__':print("作为主程序运行")some_function()
else:print("被导入为模块")

直接运行时的输出

作为主程序运行
这是一个函数

被其他模块导入时的输出

被导入为模块

实际应用场景

  1. 测试代码​:在模块底部添加测试代码,只有直接运行时才执行
  2. 脚本入口​:明确程序的入口点
  3. 避免副作用​:防止导入时执行不必要的初始化操作

最佳实践

  • 在编写可重用模块时,应该使用这个结构
  • 主程序逻辑放在这个条件块中
  • 函数和类定义通常放在这个条件块之外

类似用法

在Python包中,__main__.py文件也有类似的作用,当使用python -m package运行时,会执行__main__.py中的代码。

这个结构是Python模块化编程的重要部分,帮助开发者编写更清晰、更可维护的代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/86895.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/86895.shtml
英文地址,请注明出处:http://en.pswp.cn/web/86895.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈Apache HttpClient的相关配置和使用

Apache HttpClient是由Apache软件基金会维护的一款开源HTTP客户端库,对比最基础的 HttpURLConnection 而言,它的优势时支持连接池管理,拦截器(Interceptor)机制,同步/异步请求支持等能力。 在使用这个组件时&#xff…

【Teensy】在ArduinoIDE中配置Teensy4.1

1.文件——首选项 在其他开发板管理器地址这里添加: https://www.pjrc.com/teensy/package_teensy_index.json 点击确定! 2.安装Teensy(for Arduino IDE…) 按照图中1,2,3操作!可以选择上一个版本(不使用最…

企业自建云概念解读|私有云、专有云、混合云、分布式云、企业云

随着云计算技术逐渐成熟,越来越多的企业开始在本地数据中心自行搭建云平台,满足数据合规、业务性能与连续性、节约成本等多方面的需求。不过,面对多种多样的自建云产品,不少用户会有类似的疑问:自建云等于私有云吗&…

反弹 Shell 升级为全交互终端的两种高效方法

目录 🚀 升级反弹 Shell 为全交互终端:两种高效方法 🛠️ 方法 1:利用 Python pty.spawn 创建伪终端 📋 操作步骤

Hyper-YOLO: When Visual Object Detection Meets Hypergraph Computation论文精读(逐段解析)

Hyper-YOLO: When Visual Object Detection Meets Hypergraph Computation论文精读(逐段解析) 论文地址:https://arxiv.org/abs/2408.04804 CVPR 2024 Yifan Feng, Jiangang Huang, Shaoyi Du, Senior Member, IEEE, Shihui Ying, Jun-Hai Y…

Windows 下配置多个 GitHub 账号的 SSH Key

Windows 下配置多个 GitHub 账号的 SSH Key 假设你有以下两个 SSH key 文件: 第一个账号:id_rsa(默认)第二个账号:id_rsa_github ✅ 步骤:在 Windows 上配置多个 GitHub 账号 SSH Key 1️⃣ 打开 SSH 配…

技术选型:时序数据库(三)

IoTDB vs InfluxDB vs TDengine 时序数据库横评对比。 从 架构设计、性能、功能、生态、适用场景 等维度,对三款时序数据库进行深度对比,助您精准选型。 一、核心架构对比 数据库 存储模型 数据模型 扩展性 Apache IoTDB 分层存储(TsFi…

电子电路原理第十九章(非线性运算放大器电路的应用)

单片集成运算放大器价格便宜、用途广泛且性能可靠。它们不仅可以用于线性电路,如电压放大器、电流源和有源滤波器,而且可以用于非线性电路,如比较器、波形生成器和有源二极管电路。非线性运放电路的输出通常与输入信号的波形不同,这是因为运放在输入周期的某个时间段内达到…

FPGA实现CameraLink视频解码转SDI输出,基于LVDS+GTX架构,提供2套工程源码和技术支持

目录 1、前言工程概述免责声明 2、CameraLink协议理论学习3、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目FPGA实现CameraLink视频编解码方案本博已有的 SDI 编解码方案 4、工程详细设计方案工程设计原理框图输入CameraLink相机LVDS视频解码模块LV…

户外人像要怎么拍 ?

前言: ” 接上篇,培养你的眼力 - 摄影构图,本文是整理自《美国纽约摄影学院 摄影教材》,第三单元 - 第9课 - 自然光,课后习题及解答。“ 1. 正面光产生无深浅反差的平面感觉。 理解这题,首先得明白什么是…

华为云Flexus+DeepSeek征文 | 华为云 ModelArts Studio 赋能高情商AI聊天助手:用技术构建有温度的智能对话体验

前言 华为云 ModelArts Studio 是基于 ModelArts 构建的一站式大模型即服务平台(MaaS),可通过与开源 Agent 框架 Dify.AI 结合来开发对接 AI 聊天助手。 在打造 “高情商” 特性的过程中,华为云ModelArts Studio 的自定义提示词…

Spring Boot属性配置方式

一、Spring Boot属性配置方式。 在编写完成后端程序之前,可以通过yml配置文件键值对的方式修改配置环境,一旦打包完成,再次修改yml配置文件较为麻烦,此时,可以使用以下配置方式: 1.命令行参数方式 …

Webpack原理剖析与实现

1. 整体架构设计 Webpack 5 的整体架构设计包括以下几个核心模块: Compiler:负责整个编译过程,从读取配置、解析模块、生成依赖图,到输出最终的打包结果,主要文件是 lib/Compiler.js 。 Compilation:代表一次编译过程,包括所有模块、依赖关系和编译结果,主要文件是 li…

【Python使用】嘿马python运维开发全体系教程第2篇:日志管理,Linux概述【附代码文档】

教程总体简介:网络设定 学习目标 1、手动设定 2、DHCP自动获取 系统基本优化 一、永久关闭SELinux 1. 永久关闭 二、关闭防火墙 2. 临时启动关闭防火墙 三、设定运行级别为3(命令行模式) 四、修改ssh端口号 ssh服务 一、ssh介绍 二、客户端远…

Hibernate报No Dialect mapping for JDBC type 1111(APP)

文章目录 环境症状问题原因解决方案报错编码 环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.5 症状 客户应用中报错No Dialect mapping for JDBC type 1111。 问题原因 客户使用Hibernate,实体类的中设置的数据类型与数…

【数据分析】环境数据降维与聚类分析教程:从PCA到可视化

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍教程内容数据预处理主成分分析(PCA)聚类分析可视化分析结果提取簇特征教程目的加载R包数据下载导入数据数据预处理主成分分析(PCA)计算相关矩阵绘制相关矩阵热图执行PCA可视化…

mac 安装python,切换python版本

一、安装多版本的PYTHON 在macOS上,你可以通过Homebrew包管理器安装多个版本的Python 安装Homebrew 首先,如果你的macOS上没有安装Homebrew,需要先进行安装。打开终端(Terminal)并输入以下命令: /bin/b…

AMD图形和计算架构:RNDA

AMD图形和计算架构:RNDA AMD RDNA 是 AMD 为显卡(GPU)设计的 图形和计算架构,专为高性能游戏、实时渲染和并行计算优化。目前已经迭代到 RDNA 3(如 RX 7000 系列显卡),与 NVIDIA 的 RTX 系列和…

ubuntu20.04配置go环境

下载go语言安装包 下载地址: All releases - The Go Programming Language 解压安装包 tar xfz go1.17.linux-amd64.tar.gz -C /usr/local 配置环境变量 编辑配置文件 vim ~/.bashrc # go env export GOROOT/usr/local/go export GOPATH$HOME/software/go ex…

Monorepo+Pnpm+Turborepo

以下是关于 Monorepo pnpm Workspace Turborepo 的详细解析,涵盖核心概念、技术优势、配置实践及协作机制,结合行业最佳实践总结。 一、Monorepo 的核心价值 Monorepo(单一仓库)指多个项目/模块共享同一代码库的管理模式&#…