nonlocal 与global关键字

Python精进系列:nonlocal 关键字详解_python nonlocal-CSDN博客

nonlocal 关键字用于在嵌套函数中声明一个变量为"非局部变量",即该变量属于外层函数的作用域,而非当前函数的局部作用域
def outer():

x = "外层值"

def inner():

nonlocal x # ✅ 声明 x 是外层变量

x = "内层修改值"

print("内层函数:", x)

inner()

print("外层函数:", x)

outer()

传统方案(全局变量)

count = 0

def counter():

global count

count += 1

return count

print(counter()) # 1

print(counter()) # 2

改进方案(使用 nonlocal

def make_counter():

count = 0

def counter():

nonlocal count

count += 1

return count

return counter

cnt = make_counter()

print(cnt()) # 1

print(cnt()) # 2

x = 10 # 全局变量

def modify():

global x # 声明x为全局变量

x = 20 # 修改全局x的值

modify()

print(x) # 输出20

相关推荐
伊玛目的门徒4 小时前
HTTP SSE 流式响应处理:调用腾讯 智能应用开发平台ADP智能体的 API
python·网络协议·http·腾讯智能体·adp·智能应用开发平台
倔强的小石头_4 小时前
Python 从入门到实战(八):类(面向对象的 “对象模板”)
服务器·开发语言·python
Mr_Xuhhh4 小时前
第一部分:类和对象(中)— 取地址运算符重载
java·开发语言
Selegant4 小时前
告别传统部署:用 GraalVM Native Image 构建秒级启动的 Java 微服务
java·开发语言·微服务·云原生·架构
qq_214782614 小时前
GWalkR,部分替代Tableau!
ide·python·jupyter
Liii4034 小时前
Java集合详细讲解
java·开发语言
Yuner20004 小时前
Python机器学习:从零基础到深度实战
人工智能·python·机器学习
落羽的落羽4 小时前
【C++】哈希扩展——位图和布隆过滤器的介绍与实现
linux·服务器·开发语言·c++·人工智能·算法·机器学习
fish_xk5 小时前
类和对象(二)
开发语言·c++·算法
r i c k5 小时前
办公小程序开发----提高工作效率
python·python程序开发