homework1—if __name__==‘__main__’:的含义,why?

news/2025/3/31 17:21:18/文章来源:https://www.cnblogs.com/hhhrjgc/p/18798719

if __name__ == '__main__':是Python中常见的条件判断语句,用于控制代码的执行方式。具体含义和用途如下:

1️⃣含义
__name__ 是Python的内置变量,表示当前模块的名称。
当一个Python文件(模块)被直接运行时,其 __name__ 会被自动设置为 '__main__'
如果该文件是被其他模块导入的,则 __name__ 会保留模块的原始名称(如文件名 example)。

2️⃣为什么使用它?

  1. 区分直接执行与导入
    通过该条件判断,可以让同一份代码在不同场景下选择性执行:
    直接运行该文件时,if __name__ == '__main__': 下的代码会被执行。

    • 被其他模块导入时,这段代码不会自动执行。
  2. 模块化与复用性

    • 当编写一个既包含功能函数又包含测试代码的模块时,可以用此语句将测试代码隔离。例如:
      def add(a, b):return a + bif __name__ == '__main__':print(add(2, 3))  # 直接运行时才执行测试
      
    • 其他模块导入该文件时,不会触发测试代码,仅使用 add 函数。
  3. 避免副作用
    如果模块在被导入时自动执行某些操作(如打印日志、初始化变量),可能会导致意外行为。通过此语句可以避免这类问题。

总结

if __name__ == '__main__': 的核心作用是判断当前模块是否作为主程序运行,从而灵活控制代码的执行逻辑。这是Python模块化编程的最佳实践之一,提升了代码的可维护性和复用性。

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

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

相关文章

PVE-0-虚拟化实验环境准备

后续实验环境的搭建过程中的技术选型虚拟化环境简介 虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机(对计算机物理资源的抽象,实现资源的模拟、隔离和共享)。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在…

【Java 玩转 MCP】手把手教你打造 Git AI 仓库助手

背景 随着人工智能技术的快速发展,开发者工具也在不断进化。Gitee 作为国内领先的代码托管平台,现已推出 MCP (Model Control Protocol) 功能,让开发者能够通过 AI 助手更高效地管理代码仓库。mcp-gitee 是 Gitee 的模型上下文协议 (MCP) 服务器实现,它提供了一组与 Gitee …

探秘Transformer系列之(19)----FlashAttention V2 及升级版本

从零开始解析Transformer,目标是:(1) 解析Transformer如何运作,以及为何如此运作,让新同学可以入门;(2) 力争融入一些比较新的或者有特色的论文或者理念,让老鸟也可以有所收获。探秘Transformer系列之(19)----FlashAttention V2 及升级版本 目录探秘Transformer系列之(…

多线程程序设计(五)——Producer-Consumer

本文摘要了《Java多线程设计模式》一书中提及的 Producer-Consumer 模式的适用场景,并针对书中例子(若干名称有微调)给出一份 C++ 参考实现及其 UML 逻辑图,也列出与之相关的模式。 ◆ 适用场景 为了匹配数据的生产者(Producer)线程与消费者(Consumer)线程之间的处理速…

Google Chrome AI innovations Al In One

Google Chrome AI innovations Al In OneGoogle Chrome AI innovations Al In OneConsole Insights & AI assistance通过控制台数据分析更好地了解错误和警告https://goo.gle/devtools-console-messages-ai https://developer.chrome.com/docs/devtools/console/understand…

【Java开发 】mcp server实战

Model Context Protocol(MCP)作为新一代 AI 服务交互协议,近期发布了 Java SDK 0.8 版本。 虽然新版本带来了更强大的会话管理能力和工具集成机制,但直接使用原生 SDK 仍存在以下挑战:需要手动处理依赖注入和生命周期管理工具注册流程较为复杂缺乏与现有 Spring 生态的深度…

T检验(Students T-test), Wilcoxon符号秩检验,Mann-Whitney U检验

1.基本概念 T检验 是一种统计学方法,用于判断两组数据的均值是否存在显著差异 。其核心思想是通过计算“t值”和对应的“p值”,评估观察到的差异是否由随机误差引起,还是反映了真实的生物学或实验效应。 适用场景 :比较两组独立样本的均值(如对照组 vs 实验组)。 检验单组…

写了 8 年C++,才知道this指针竟是这样工作的!从汇编看本质!

大家好,我是小康。今天我们来聊聊 C++ 的 this 指针。 相信我,看完这篇文章,你将彻底搞懂 C++ 中最神秘的 this 指针!不再被面试官问到 this 时一脸茫然! 前言:this指针,C++中的隐形杀手 嘿,朋友们!还记得第一次接触 C++ 的 this 指针时的懵逼感觉吗? "为啥要用…

Redis 过期键删除和内存淘汰策略【Redis 系列之四】

本文主要介绍了 Redis 过期键删除和内存淘汰策略,仅供参考。〇、前言 对于 Redis 服务器来说,内存资源非常宝贵,如果一些过期键一直不被删除,就会造成资源浪费。 那么,本文将结合博主收集的资料,简单介绍下过期键删除、内存淘汰两个策略,仅供参考。 博主 Redis 相关文章…

2025最新面试题-mysql面试题(三)

事务的四大特性 A账户 10000 -2000 8000+2000=10000 8000+2000 写入buffer Pool(内存缓冲池) Redo Log 环形日志 磁盘 B账户 5000 +2000 7000 原子性(Atomicity) 也就是我们刚才说的不可再分,也就意味着我们对数据库的一系列的操作,要么都是成功,要么都是失败,不可能出…

【MCP协议】你需要了解的 AI 集成突破

了解 MCP 如何重塑 AI 与外部数据源交互的能力。 MCP——是不是有点懵?这也是我的第一反应。我最近才听说它,发现大多数人甚至还不了解它。起初,我也感到困惑,以为这不过是又一个AI领域的流行词。但随着深入了解,我发现MCP并非昙花一现的潮流,而是真正解决了一个长期困扰…

卧槽!C 语言宏定义原来可以玩出这些花样?高手必看!

大家好啊!我是小康。 今天我们来聊一个听起来枯燥但实际上暗藏玄机的话题 —— C 语言的宏定义。 啥?宏定义?那不就是个简单的替换工具吗? 兄dei,如果你也是这么想的,那可就大错特错了!宏定义在 C 语言里简直就是个变形金刚,看似普通,实则暗藏神通。今天我们就来扒一扒…