Python LEGB规则解析与应用
引言
推荐阅读
AI文本 OCR识别最佳实践
AI Gamma一键生成PPT工具直达链接
玩转cloud Studio 在线编码神器
玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间
资源分享
「java、python面试题」来自UC网盘app分享,打开手机app,额外获得1T空间
https://drive.uc.cn/s/2aeb6c2dcedd4
AIGC资料包
https://drive.uc.cn/s/6077fc42116d4
https://pan.xunlei.com/s/VN_qC7kwpKFgKLto4KgP4Do_A1?pwd=7kbv#
8月21日更新自媒体素材网站,方便你的视频剪辑
SDXL专区8个教程,SD六日更新6个教程
8月资料专题已更新
https://yv4kfv1n3j.feishu.cn/docx/MRyxdaqz8ow5RjxyL1ucrvOYnnH前置条件:https://cloud.tencent.com/developer/article/2304343 ←文章三连评论666
在Python编程语言中,LEGB规则是指变量解析的顺序。它由四个层级组成,依次是Local(局部)、Enclosing(嵌套)、Global(全局)和Built-in(内建)。了解LEGB规则对于理解Python代码的执行流程和变量作用域至关重要。本文将详细解析LEGB规则,并通过示例代码演示其应用。
1. Local(局部)作用域
首先,我们来了解Local作用域。Local作用域指的是在函数内部定义的变量,只能在函数内部访问。当函数执行时,会创建一个新的命名空间,用于保存函数内部定义的变量。示例如下:
def my_function():x = 10print(x)my_function() # 输出结果为 10
print(x) # 报错,x未定义
在上述代码中,变量x
是在函数my_function()
内部定义的,在函数内部可以正常访问。但是在函数外部尝试访问x
会报错,因为x
的作用域仅限于函数my_function()
。
2. Enclosing(嵌套)作用域
Enclosing作用域指的是在嵌套函数中定义的变量,可以在嵌套函数以及其外部函数中访问。在这种情况下,变量的作用域涵盖了所有嵌套层级。示例如下:
def outer_function():x = 10def inner_function():print(x)inner_function() # 输出结果为 10outer_function()
在上述代码中,变量x
被定义在外部函数outer_function()
中,在嵌套函数inner_function()
中可以正常访问。这是因为内部函数可以访问外部函数中的变量。
3. Global(全局)作用域
Global作用域指的是在函数外部和模块层级定义的变量,可以在整个代码中任意位置访问。在Python中,模块层级定义的变量被视为全局变量。示例如下:
x = 10def my_function():print(x)my_function() # 输出结果为 10
print(x) # 输出结果为 10
在上述代码中,变量x
被定义在函数外部,可以在函数内部以及函数外部任意位置访问,因此函数my_function()
可以正常访问变量x
。
4. Built-in(内建)作用域
Built-in作用域指的是Python内置的函数和模块,也就是Python解释器默认提供的一些函数和类。这些函数和类可以在任何地方直接使用,无需导入或定义。示例如下:
print("Hello, World!") # 输出结果为 Hello, World!
在上述代码中,print()
函数是Python内置的函数,在任何地方都可以直接使用。
5. LEGB规则的应用示例
理解LEGB规则对于编写可维护和健壮的代码非常重要。下面通过一个示例来演示LEGB规则的应用。
x = 10def outer_function():x = 20def inner_function():nonlocal xx = 30print("Inner function:", x)inner_function()print("Outer function:", x)outer_function()
print("Global:", x)
以上代码的执行结果如下:
Inner function: 30
Outer function: 30
Global: 10
在这个示例中,我们分别定义了全局变量x
、外部函数outer_function()
和内部函数inner_function()
。在内部函数中,我们使用了nonlocal关键字,将外部函数的变量
x声明为nonlocal,这样在修改
x的值时,会影响外部函数的变量。可以看到,内部函数和外部函数都可以访问和修改
x的值,而全局作用域中的
x`保持不变。
这个示例展示了LEGB规则在嵌套函数中的应用。通过合理地使用局部、嵌套、全局和内建作用域,可以实现变量的灵活管理。
结论
LEGB规则是Python中变量解析的基本原则,它定义了四个层级的作用域,分别是Local、Enclosing、Global和Built-in。了解LEGB规则对于正确理解Python代码的执行流程、作用域和变量解析非常重要。只有通过合理地利用LEGB规则,才能编写出可维护、健壮且具有良好封装性的代码。
希望本文对您理解LEGB规则的应用和在Python编程中的意义有所帮助。在实际编程过程中,请注意合理使用作用域和避免变量名冲突,以提升代码的可读性和可维护性。
附录:代码demo
# Local(局部)作用域示例
def my_function():x = 10print(x)my_function() # 输出结果为 10
print(x) # 报错,x未定义# Enclosing(嵌套)作用域示例
def outer_function():x = 10def inner_function():print(x)inner_function() # 输出结果为 10outer_function()# Global(全局)作用域示例
x = 10def my_function():print(x)my_function() # 输出结果为 10
print(x) # 输出结果为 10# Built-in(内建)作用域示例
print("Hello, World!") # 输出结果为 Hello, World!# LEGB规则的应用示例
x = 10def outer_function():x = 20def inner_function():nonlocal xx = 30print("Inner function:", x)inner_function()print("Outer function:", x)outer_function()
print("Global:", x)
以上就是LEGB规则的解析与应用的相关内容和示例代码。如有疑问,欢迎进行讨论和提问。感谢阅读!
相关文章:
Python LEGB规则解析与应用
引言 推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 资源分享 「java、python面试题」来自UC网盘app分享,打开手机app,额外获得1T空间 http…...

气象监测站:用科技感知气象变化
气象监测站是利用科学技术感知当地小气候变化情况的气象观测仪器,可用于农业、林业、养殖业、畜牧业、环境保护、工业等多个领域,提高对环境数据的利用率,促进产业效能不断提升。 气象监测站主要由气象传感器、数据传输系统、电源系统、支架…...

Linux debian12解压和压缩.rar文件教程
一、Debian12安装rar命令 sudo apt install rar二、使用rar软件 1.解压文件 命令格式: rar x 文件名.rar实例测试: [rootdoudou tmp]# rar x test.rar2.压缩文件 test是一个文件夹 命令格式: rar a 文件名.rar 文件夹名实例测试&#x…...

探析国际大文件传输的花费与降低开销的小妙招
随着全球化的不断发展,跨国企业日益增多,因此国外大文件传输也日益普遍。在这种背景下,国外大文件传输方式的需求也相应增加。本文旨在深入分析国外大文件传输的成本,并提出有效降低这些成本的方法。 一、国外大文件传输成本分析 …...

Linux中shell脚本——for、while循环及脚本练习
目录 一.for循环 1.1.基本格式 1.2.类C语言格式 二.while循环 2.1.基本格式 2.2.死循环语句 三.跳出循环 3.1.continue跳出循环 3.2.break跳出循环 四.常用循环 4.1.循环打印九九乘法表 4.2.循环ping测试某个网段网络连通性 4.3.while死循环实现猜数字游戏 4.4.数…...

【数字实验室】时钟切换
大部分开发者使用 BUFGCTRL 或 BUFGMUX进行时钟切换,它们在时钟切换上可以提供无毛刺输出。然而,了解所涉及的原理是有好处的。 当然,无论我们在同步逻辑中使用哪种技术,重要的是要确保在进行时钟切换时输出上没有毛刺。任何故障都…...

线性代数的学习和整理7:各种特殊效果矩阵特例(草稿-----未完成)
目录 1 矩阵 1.1 1维的矩阵 1.2 2维的矩阵 1.3 没有3维的矩阵---3维的是3阶张量 2 方阵 3 单位矩阵 3.1 单位矩阵的定义 3.2 单位矩阵的特性 3.3 为什么单位矩阵I是 [1,0;0,1] 而不是[0,1;1,0] 或[1,1;1,1] 3.4 零矩阵 3.4 看下这个矩阵 [0,1;1,0] 3.5 看下这个矩阵…...

springBoot 配置文件 spring.mvc.throw-exception-if-no-handler-found 参数的作用
在Spring Boot应用中,可以通过配置文件来控制当找不到请求处理器(handler)时是否抛出异常。具体的配置参数是spring.mvc.throw-exception-if-no-handler-found。 默认情况下,该参数的值为false,即当找不到请求处理器时…...

linux部署kafka3.5.1(单机)
一、下载jdk17 kafka3.x版本需要jdk11以上版本才能更好的兼容,jdk11、jdk17都是LTS长期维护版本,而且jdk17支持springboot3.x,所以我选择了openjdk17。 下载地址: Archived OpenJDK GA Releaseshttps://jdk.java.net/archive/ 二、上传jdk安装包解压 …...

css 实现svg动态图标效果
效果演示: 实现思路:主要是通过css的stroke相关属性来设置实现的。 html代码: <svgt"1692441666814"class"icon"viewBox"0 0 1024 1024"version"1.1"xmlns"http://www.w3.org/2000/svg"p-id"…...

软件测试项目实战,电商业务功能测试点汇总(全覆盖)
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 支付功能怎么测试…...

LeetCode[274]H指数
难度:Medium 题目: 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指…...

MyBatis-Plus快速开始[MyBatis-Plus系列] - 第482篇
悟纤:师傅,MyBatis-Plus被你介绍的这么神乎其乎,咱们还是来的点实际的吧。 师傅:那真是必须的,学习技术常用的一种方法,就是实践。 悟纤:贱贱更健康。 师傅:这… 师傅:…...
CF1003A Polycarp‘s Pockets 题解
题目传送门 题目意思: 给你 n n n 个数,求出最多相同的数的个数。 这道题目有两种解法。 方法一:桶排 一边输入,一边将第 i i i 个数 a i a_i ai 出现的次数存在一个数组 b b b 的第 a i a_i ai 个位置。输入完后遍历…...
数据库厂商智臾科技加入龙蜥社区,打造多样化的数据底座
近日,浙江智臾科技有限公司(以下简称“智臾科技”)正式签署 CLA 贡献者许可协议,加入龙蜥社区(OpenAnolis)。 智臾科技主创团队从 2012 年开始投入研发 DolphinDB。DolphinDB 作为一款基于高性能时序数据库…...

一天赚四五十的副业,可以试试这几种
大家都希望能够有额外的零花钱,尤其是对于学生和不收入稳定的人来说。今天,我将分享一些简单实用的赚钱技巧,帮助你每天赚取四五十的零花钱,让你的钱包更丰盈。 第一种:蚂蚁路客和友活来了 支付宝旗下两款接任务拍门…...

OpenCV 中的色彩空间 (C++ / Python)
在本教程中,我们将了解计算机视觉中使用的流行色彩空间,并将其用于基于颜色的分割。我们还将分享 C++ 和 Python 的演示代码。...

邀请函 | 高质量区块链·元宇宙—标准行系列沙龙(北京站)即将开启
区块链、元宇宙是近年来备受关注的新兴技术,也是推动数字经济发展的重要力量。高质量标准引领高质量发展,加快形成标准引领,充分释放区块链、元宇宙对实体经济牵引赋能效应,推进形成相关产业体系高质量发展新格局刻不容缓。 为进…...
php hmacsha256加密的算法
HMAC-SHA256是一种基于哈希算法的消息认证码算法,用于验证数据的完整性和真实性。它将密钥和数据一起进行哈希运算,生成一个固定长度的摘要值。只有知道密钥的人才能够验证该摘要值的真实性。 在PHP中,可以使用hash_hmac函数来计算HMAC-SHA2…...

Spring源码编译教程
1. Spring版本是5.3.10 2. 下载gradle依赖 Spring是通过gradle来编译源码下载依赖的,.gradle文件夹可以理解为gradle的仓库(和mave类似,不懂gradle的先这么理解),而我给大家的这个仓库,只包含了Spring源码…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...