Python 函数作用域

Python程序中,命名空间分为全局和局部,局部作用域限制了对象的访问范围,防止命名冲突。函数内部创建的变量是局部的,不能在函数外部访问。LEGB规则(本地-封闭-全局-内置)指导了Python解释器如何解析名称。全局声明可以通过`global`关键字实现,让函数内部的变量引用全局空间的变量。非局部声明`nonlocal`用于在封闭函数作用域中访问和修改变量。避免过度使用`global`以保持代码清晰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当您在Python程序中使用名称(例如变量名函数名等)时,Python会在命名空间中创建、更改或查找该名称。命名空间是给定上下文中存在的名称的完整列表。

命名空间有两种类型,全局命名空间局部命名空间。

对象的范围决定了程序中可以访问它的位置,默认情况下,对象只能从它们出现的名称空间内访问。全局命名空间中的对象可以从程序中的任何位置访问,这是在模块或脚本的顶层声明的名称,即不在函数、类等内部声明的名称。另一方面,在诸如函数之类的块对于该块来说是本地的,并且只能在该块内访问。

当我们定义一个函数时,Python 会为该函数设置一个本地命名空间。函数内部声明的任何对象只能在函数内部访问,该对象被称为该函数的本地对象。尝试访问其范围之外的本地对象将引发NameError.例如:

def demo():
    x 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q shen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值