Python,如何更改父作用域中变量的值?

2024-04-24 20:30:50 发布

您现在位置:Python中文网/ 问答频道 /正文

例如: assginment语句将声明一个新的局部变量。在

foo = 'global'
def func1():
    foo = 'func1'
    def func2():
        foo = 'local variable in func2'

使用全局声明将在global中使用foo:

^{pr2}$

如何更改func1作用域中的foo变量?
谢谢你的帮助。

编辑:

谢谢布兰登·克雷格·罗德斯,我终于明白你的意思了。

如果嵌套的范围超过3个,我可以将变量存储在一个列表中。在

foo = ['global', 'function1', 'function2']
def func1():
    foo[1] = 'func1'
    def func2():
        foo[2] = 'func2'
        foo[1] = 'func1 modified in func2'

实际上我只是用了一个全局变量。在


因此,如果有两个函数嵌套,我们可以使用

nonlocal foo 

以及

global foo 

如果有三个以上的函数嵌套,
每个函数都使用其他函数范围内的变量,
为什么不声明一个全局列表变量?
谢谢你的帮助!!!


Tags: 函数in声明列表foolocaldef语句
2条回答

在python3.0及更高版本中,可以使用nonlocal关键字。在

我相信,在python3中,您可以使用nonlocal关键字来获得在封闭的非全局范围内修改变量的权限。在Python2中,不能在封闭范围内重新分配foo;相反,请将foo设置为一个可变对象,如列表[],然后将要存储的值粘贴到列表中:

def func1():
    foo = [None]
    def func2():
        foo[0] = 'Test'

相关问题 更多 >