Python 如何从封闭范围声明变量?
我如何编写类似以下工作的代码?我想在封闭的函数范围内引用一个变量进行赋值Python 如何从封闭范围声明变量?,python,python-2.7,Python,Python 2.7,我如何编写类似以下工作的代码?我想在封闭的函数范围内引用一个变量进行赋值 def outer(): x = 0 def inner(): x += 1 inner() 编写的代码给出了一个UnboundLocalError。我理解为什么会出现这个错误,我只是不知道如何表明x来自包装范围。你不能以干净的方式做你要求的事情。global语句对您没有任何帮助。您将希望按照以下方式对其进行编码: def outer(): x = 0 def
def outer():
x = 0
def inner():
x += 1
inner()
编写的代码给出了一个
UnboundLocalError
。我理解为什么会出现这个错误,我只是不知道如何表明x
来自包装范围。你不能以干净的方式做你要求的事情。global
语句对您没有任何帮助。您将希望按照以下方式对其进行编码:
def outer():
x = 0
def inner(x):
return x + 1
x = inner(x)
这样做的另一个好处是,可以明确说明数据是如何传入和传出函数的
也许您需要将x
替换为状态可以改变的对象。您可以执行以下操作:
def outer():
x = [0]
def inner():
x[0] += 1
inner()
您不能重新绑定非本地变量,但可以对其进行变异。您不能重新绑定(分配)非本地/非全局范围内的变量。我想我需要Python 3的
非本地
关键字。如果它是一个简单的函数,则可能是重复的,但它更像是一个状态更新函数,它可以修改多个项目并执行其他操作。恐怕你的愿望不会改变语言所提供的功能。