鱼C论坛

 找回密码
 立即注册
查看: 1354|回复: 5

使用nonlocal及global语句在嵌套函数中逐层修改变量并最终能够修改全局变量的值的疑问

[复制链接]
发表于 2025-1-19 16:31:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小甲鱼老师在嵌套函数的客户题中有这么一个例子,如下:

>>> x = 100
>>> def funA():
...     global x
...     x = 250
...     def funB():
...         nonlocal x
...         x = 520
...     funB()
...
>>> funA()
>>> print(x)


解析答案为会报错,因为外层的 x 变量已经被提前一步定义为全局变量了(也就相当于外层不存在一个叫 x 的局部变量),于是找不到外层的同名的 x 变量,所以便会报错(SyntaxError: no binding for nonlocal 'x' found)。

我好奇想问问有没有办法能够使嵌套函数内的值修改到外层函数x的值,以及全部变量x的值?望大神指教!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-20 03:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表