1、nonlocal的作用是什么?是基于python的什么特点?
通过nonlocal关键字,可以使内层的函数直接使用外层函数中定义的变量。
在Python中,函数的定义可以嵌套,即在一个函数的函数体中可以包含另一个函数的定义。
2、Demo
不使用nonlocal关键字案例
def outer(): #定义函数outer x=10 #定义局部变量x并赋为10 def inner(): #在outer函数中定义嵌套函数inner x=20 #将x赋为20 print('inner函数中的x值为:',x) inner() #在outer函数中调用inner函数 print('outer函数中的x值为:',x) outer() #调用outer函数
输出:inner函数中的x值为: 20
outer函数中的x值为: 10
提示:在inner函数中通过第四行的“x = 20”定义了一个新的局部变量x并将其赋为20
使用nonlocal关键字案例
1 def outer(): #定义函数outer 2 x=10 #定义局部变量x并赋为10 3 def inner(): #在outer函数中定义嵌套函数inner 4 nonlocal x #nonlocal声明 5 x=20 #将x赋为20 6 print('inner函数中的x值为:',x) 7 inner() #在outer函数中调用inner函数 8 print('outer函数中的x值为:',x) 9 outer() #调用outer函数
输出:inner函数中的x值为: 20
outer函数中的x值为: 20
提示:通过“nonlocal x”声明在inner函数中使用outer函数中定义的变量x,而不是重新定义一个局部变量x
披荆斩棘,仗剑天涯
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」