作用域与闭包:理解Python变量查找机制
在 Python 编程中,作用域(Scope)决定了变量的可见性和生命周期,而闭包(Closure)则是作用域机制的进阶应用,它让函数可以“记住”其定义时的环境。 理解作用域和闭包,不仅是写出正确代码的前提,更是掌握装饰器、回调函数、函数式编程等高阶技巧的基础。然而,许多开发者对 Python 的变量查找规则(LEGB)只知其一不知其二,对global和nonlocal的用法也常常混淆。 本文将从底层原理出发,系统讲解 Python 的作用域层次、变量查找顺序、闭包的形成条件与典型应用,并通过大量实例帮助你彻底掌握这一核心机制。📌 本文适合谁?无论你是初学 Python 的新手,还是希望深入理解作用域与闭包、提升代码质量的进阶开发者,本文都将为你提供清晰、实用的指导。一、作用域基础:LEGB 规则Python 使用LEGB规则来决定变量的查找顺序,即:Local → Enclosing → Global → Built-in。 当在代码中引用一个变量时,Python 会按照这个顺序依次查找,直到找到第一个匹配的变量,否则抛出NameError。1.1 Local(局部作用域)局部作用域是指函数或方法内部的作用域。在函数内赋值的变量默认为局部变量,仅在函

相关新闻

Java开发与大数据处理:Hadoop与Spark集成实战

Java开发与大数据处理:Hadoop与Spark集成实战

在当今数据驱动的时代,高效处理海量数据已成为企业保持竞争力的关键。Java作为企业级应用开发的主流语言,与大数据处理框架Hadoop和Spark的集成,为开发者提供了强大的工具组合。本文将深入探讨Java开发与Hadoop、Spark的集成实战,…

2026/6/20 15:54:21阅读更多 →
YOLO26轻量级通道注意力:高斯上下文变换器GCT实战

YOLO26轻量级通道注意力:高斯上下文变换器GCT实战

1. 项目概述:为什么在YOLO26里塞进一个“高斯上下文变换器”? 最近翻YOLO26的源码和社区讨论,发现一个特别有意思的现象:大家不再只盯着Backbone换ResNet还是CSPDarknet,也不再满足于简单堆叠CBAM或SE模块——而是开始…

2026/6/20 15:49:21阅读更多 →
5分钟上手终极游戏存档编辑器:免费可视化修改工具快速入门指南

5分钟上手终极游戏存档编辑器:免费可视化修改工具快速入门指南

5分钟上手终极游戏存档编辑器:免费可视化修改工具快速入门指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 游戏存档编辑器d2s-editor是一款专为《暗黑破坏神2》玩家设计的免费开源可视化游戏存档修改工具。这款强…

2026/6/20 15:49:21阅读更多 →
CANN/ge GetOutputsSize API文档

CANN/ge GetOutputsSize API文档

GetOutputsSize 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow…

2026/6/20 17:09:35阅读更多 →
提升直播互动效率:bilibili-live-tools高级功能使用技巧与最佳实践

提升直播互动效率:bilibili-live-tools高级功能使用技巧与最佳实践

提升直播互动效率:bilibili-live-tools高级功能使用技巧与最佳实践 【免费下载链接】bilibili-live-tools python实现的bilibili直播助手 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-live-tools bilibili-live-tools是一款基于Python开发的直播助…

2026/6/20 17:09:35阅读更多 →
Windows 11拖放功能终极修复指南:如何快速恢复任务栏拖放操作

Windows 11拖放功能终极修复指南:如何快速恢复任务栏拖放操作

Windows 11拖放功能终极修复指南:如何快速恢复任务栏拖放操作 【免费下载链接】Windows11DragAndDropToTaskbarFix "Windows 11 Drag & Drop to the Taskbar (Fix)" fixes the missing "Drag & Drop to the Taskbar" support in Window…

2026/6/20 17:09:35阅读更多 →
为什么需要Bootstrap Accessibility Plugin?6大核心优势解析

为什么需要Bootstrap Accessibility Plugin?6大核心优势解析

为什么需要Bootstrap Accessibility Plugin?6大核心优势解析 【免费下载链接】bootstrap-accessibility-plugin Accessibility Plugin for Bootstrap 3 and Bootstrap 3 as SubModule 项目地址: https://gitcode.com/gh_mirrors/bo/bootstrap-accessibility-plugi…

2026/6/20 17:09:35阅读更多 →
NowJS源码解析:揭秘实时数据同步的实现原理

NowJS源码解析:揭秘实时数据同步的实现原理

NowJS源码解析:揭秘实时数据同步的实现原理 【免费下载链接】now NowJS makes it easy to build real-time web apps using JavaScript 项目地址: https://gitcode.com/gh_mirrors/now/now NowJS 是一个基于Node.js的实时Web应用框架,它让开发者能…

2026/6/20 17:09:34阅读更多 →
ARM7嵌入式开发实战:OSEKturbo OS环境搭建、任务调度与事件机制详解

ARM7嵌入式开发实战:OSEKturbo OS环境搭建、任务调度与事件机制详解

1. 从零开始:理解 OSEK/VDX 与 OSEKturbo OS如果你正在开发基于 ARM7 的嵌入式系统,尤其是汽车电子控制单元(ECU)或对实时性有苛刻要求的工业控制器,那么“实时操作系统”这个词一定不会陌生。它不是 Linux 那样的通用…

2026/6/20 17:04:34阅读更多 →
【课程设计/毕业设计】基于 Web 的高校县志馆藏信息综合管理系统设计与实现 基于Django的青岛滨海学院特色文献捐赠流转管理系统的设计与实现【附源码、数据库、万字文档】

【课程设计/毕业设计】基于 Web 的高校县志馆藏信息综合管理系统设计与实现 基于Django的青岛滨海学院特色文献捐赠流转管理系统的设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/6/20 0:02:40阅读更多 →
MC68HC908RF2A定时器PWM生成原理与实战:无缓冲与缓冲模式详解

MC68HC908RF2A定时器PWM生成原理与实战:无缓冲与缓冲模式详解

1. 项目概述与核心价值在嵌入式开发,尤其是电机驱动、LED调光、开关电源这些需要精确控制“能量”的领域,脉冲宽度调制(PWM)技术是工程师手中的一把瑞士军刀。它的本质很简单:用一个固定频率的方波,通过改变…

2026/6/20 0:02:40阅读更多 →
在银河麒麟V10桌面(2205版本)上实战部署软RAID 1:从模块黑名单到自动挂载

在银河麒麟V10桌面(2205版本)上实战部署软RAID 1:从模块黑名单到自动挂载

1. 银河麒麟V10桌面系统与软RAID 1基础认知 第一次在银河麒麟V10桌面上折腾软RAID 1时,我踩了不少坑。这个国产操作系统基于Linux内核,但2205版本对软RAID模块做了特殊处理,需要额外操作才能正常使用。软RAID 1其实就是磁盘镜像技术&#xff…

2026/6/20 0:02:40阅读更多 →