|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我写了一个三层嵌套函数,每层嵌套函数里均只有一个x变量,我想通过nonlocal语句从最里层的嵌套函数中的x值(101112)逐层修改上一层函数中的x值,到达最外层函数时再通过global语句修改全局变量x的值(123),,使全局变量x的值由123变为101112,我的执行代码附上,但在程序执行时却出现报错,报错截图如下:
x = 123
def level1():
global x
x = 456
print(f'在第一层函数中x的值是{x},相应的id值是{id(x)}')
def level2():
nonlocal x
x = 789
print(f'在第二层函数中x的值是{x},相应的id值是{id(x)}')
def level3():
nonlocal x
x = 101112
print(f'在第三层函数中x的值是{x},相应的id值是{id(x)}')
level3()
print(f'在第三层函数中声明nonlocal语句后,第二层x的值变为{x},相应的id值变为{id(x)}')
level2()
print(f'在第二层函数中声明nonlocal语句后,第二层x的值变为{x},相应的id值变为{id(x)}')
麻烦大神指点为何报错,以及如何修改全局变量x的值,谢谢!!!
只需要在所有的嵌套函数内外都使用同一个变量标识(比如,x),并且,在各级函数中,都要把这个变量声明为全局变量(global x),这样,无论函数内外,使用到的都将是同一个变量(x),无论在任何位置,只要对该变量(x)进行修改,在所有的函数内外(只限于声明过 global x 的函数),都会接收到这个修改,因为,从本质上说,它们所使用的都是同一个对象(x)。
|
|