如何在嵌套函数中修改全局变量同时修改函数变量
本帖最后由 李二蛋 于 2022-3-30 16:37 编辑>>> x
1
>>> def funA():
global x
x = 880
def funB():
nonlocal x
x = 520
print('x in funB,x = ',x)
funB()
print('x in funA,x = ',x)
SyntaxError: no binding for nonlocal 'x' found
请问各位前辈,global语句和nonlocal语句不能同时用么
我想要达到的效果是输出
x in funB,x = 520
x in funA,x = 520
x
520
我测试成功了,连续用两个global语句就可以实现
>>> def funA():
global x
x = 880
def funB():
global x
x = 520
print('x in funB,x = ',x)
funB()
print('x in funA,x =',x)
>>> funA()
x in funB,x =520
x in funA,x = 520
>>> x
520
这是为啥呢,仅在嵌套函数内层使用global仅改变全局参数,但是在嵌套函数内层和外层同时使用global,外层嵌套也被内层更改了,这是为啥呀
本地的变量声明为global,就不能在再声明为nonlocal
而且你这个需求也毫无道理 你把global和nonlocal都删掉,初始设置x = ,下边的所有x全都改成x
x=880和x=520都改成x = 880 和x = 520,print也改成x wp231957 发表于 2022-3-30 16:32
本地的变量声明为global,就不能在再声明为nonlocal
而且你这个需求也毫无道理
不能使用二者的原因是只能变量声明只能使用一个么
我的需求就是用内层嵌套函数变量去改变外层和全局
毕竟刚学嘛就什么都想尝试,
我也不清楚有没有道理,我甚至不清楚应该用在哪里怎么用五五五五
感谢前辈指点 qq1151985918 发表于 2022-3-30 16:40
你把global和nonlocal都删掉,初始设置x = ,下边的所有x全都改成x
x=880和x=520都改成x = 880 ...
前辈你这直接用列表索引去定义变量了,那么所有的变量都是一个值,这个我理解
我现在是刚学global和nonlocal语句想尝试一下嘛
都不太懂怎么用就自己瞎用也知道对不对
页:
[1]