Python变量作用域和相关的关键字
一.变量作用域变量作用域(Variable Scope)决定了变量在代码的哪个部分是可见的(可访问的)和可修改的理解作用域对于避免命名冲突、调试错误以及编写模块化代码至关重要。Python遵循LEGB规则来查找变量1.LEGB规则当你在代码中使用一个变量名时Python解释器会按照以下顺序查找该变量L(Local)局部作用域E(Enclosing)嵌套/外层作用域G(Global)全局作用域B(Built-in)内置作用域局部作用域指函数内部在函数内部定义的变量只能在函数内部访问def my_func(): x 10 print(x) print(x) # NameError: name x is not defined嵌套作用域当一个函数定义在另一个函数内部时内部函数可以访问外部函数的变量只读不能修改如果要修改要使用nonlocal关键字嵌套作用域外层函数内部内层函数外部中定义的变量在该嵌套作用域中被访问和修改def outer(): a Outer def inner(): b Inner print(a, b) inner() outer() # Outer Innerdef outer(): a Outer def inner(): b Inner a Hello Python print(a, b) inner() print(a) outer() # Hello Python Inner # Outer这里修改了a吗其实并没有inner()函数内部对a赋值其实只是新创建了一个局部变量aa的值为“Hello Python”外层a的值其实并没有修改def outer(): a Outer def inner(): nonlocal a # 使用nonlocal关键字声明变量a是外层作用域的变量而非局部变量 b Inner a Hello Python print(a, b) inner() print(a) outer() # Hello Python Inner # Hello Python全局作用域全局作用域中的变量是在文件顶层定义的变量可以在文件的任何函数中读取若要在函数中修改全局作用域中的变量要使用global关键字x Java and Python and C def my_function(): x C and JavaScript my_function() print(x) # Java and Python and Cx Java and Python and C def my_function(): global x # 使用global关键字声明变量x是一个全局变量 x C and JavaScript # 对全局变量x进行修改 my_function() print(x) # C and JavaScript内置作用域如果没有自己定义的变量Python会使用内置的名称# 没有定义len变量 print(len(hello)) # 5 Python解释器会查找并使用内置的len()函数# 自己定义了len变量 那么它会遮盖内置的len()函数 len 100 print(len(hello)) # TypeError: int object is not callable可变对象的修改和赋值这是一个常见的误区。如果变量指向的是可变对象如列表、字典你可以在不声明global/nonlocal的情况下修改对象的内容但不能重新赋值该变量名。my_list [1, 2, 3] def modify_list(): # 合法修改对象内容没有改变变量名 my_list 的指向 my_list.append(4) # 非法重新赋值变量名这会创建一个新的局部变量 my_list # my_list [10, 20] modify_list() print(my_list) # 输出: [1, 2, 3, 4]

相关新闻

注塑机数据采集如何实现与 MES 系统的双向数据闭环?

注塑机数据采集如何实现与 MES 系统的双向数据闭环?

做注塑工厂的朋友都知道,注塑机数据采集是工厂数字化转型的第一步,也是最容易踩坑的环节。很多工厂要么卡在多品牌设备协议不兼容、采不到核心数据,要么采了数据用不起来,最后钱花了没效果。 结合我15年工业数字化落地、服务过数百…

2026/5/17 12:56:20 阅读更多 →
告别“补丁恐惧症”:Java版本管理难题,终于有了第三种选择

告别“补丁恐惧症”:Java版本管理难题,终于有了第三种选择

对于许多企业IT管理员来说,每个月发布的Java补丁就像一场 unpredictable 的“开盲盒”游戏。一方面,信息安全团队不断施压,要求必须紧跟Oracle的安全更新,修补那些高危的零日漏洞,严防偷渡式攻击(Drive-by …

2026/5/17 12:56:18 阅读更多 →
京东礼品卡绑定 算法分析

京东礼品卡绑定 算法分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口 等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 部分python代码 data cp.call(getVe…

2026/5/17 12:56:17 阅读更多 →

最新新闻

AD74413R与STM32L162ZE工业级数据采集系统设计

AD74413R与STM32L162ZE工业级数据采集系统设计

1. AD74413R与STM32L162ZE的硬件协同设计AD74413R这颗芯片最吸引我的地方在于它把高精度ADC和多通道DAC集成在单芯片上,这在工业传感器接口设计中简直是神器。去年在做PLC模拟量模块时,我对比了至少五款类似芯片,最终选择AD74413R主要基于三个…

2026/7/3 16:10:26 阅读更多 →
秋之盒:免费图形化ADB工具终极指南

秋之盒:免费图形化ADB工具终极指南

秋之盒:免费图形化ADB工具终极指南 【免费下载链接】AutumnBox 图形化ADB工具箱 项目地址: https://gitcode.com/gh_mirrors/au/AutumnBox 还在为复杂的ADB命令行而头疼吗?秋之盒(AutumnBox)是一款革命性的图形化ADB工具&a…

2026/7/3 16:08:17 阅读更多 →
口碑好的鹤壁烟酒公司:节前备酒,提前安排清单

口碑好的鹤壁烟酒公司:节前备酒,提前安排清单

好的,这就为您撰写一篇关于节前备酒的原创文章,严格遵循您的要求,聚焦鹤壁本地企业的采购场景。节前备酒,鹤壁企业采购的这份“提前安排清单”请收好对鹤壁的广大企业来说,节前备酒是一项关乎员工福利、客户关系和公司…

2026/7/3 16:08:17 阅读更多 →
第30篇:安全、对齐与合规——大模型走向产业落地的最后一道门槛

第30篇:安全、对齐与合规——大模型走向产业落地的最后一道门槛

引言:能力越强,风险越大 这 30 篇专栏,我们走过了从数学基础到多模态大模型的全栈旅程。 但最后一篇不讲技术——讲安全。一个技术再先进的模型,如果不安全、不合规,就无法落地。在全球 AI 监管日益严格的今天,安全合规不仅是技术问题,更是业务问题。 一、红队测试 红…

2026/7/3 16:04:15 阅读更多 →
工业4-20mA电流环设计与STM32F303VE应用解析

工业4-20mA电流环设计与STM32F303VE应用解析

1. 工业4-20mA电流环的基础原理与设计需求在工业自动化领域,4-20mA电流环传输标准已有超过60年的应用历史。这种看似简单的信号传输方式之所以能长期占据工业现场的主导地位,关键在于其独特的物理特性:电流信号在长距离传输时不受线路电阻影响…

2026/7/3 16:02:11 阅读更多 →
浏览器扩展架构演进三部曲:从资源嗅探到媒体处理平台的技术哲学

浏览器扩展架构演进三部曲:从资源嗅探到媒体处理平台的技术哲学

浏览器扩展架构演进三部曲:从资源嗅探到媒体处理平台的技术哲学 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 技术演进的本质是在平台…

2026/7/3 15:58:09 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻