如何从封闭范围声明变量?

2024-04-25 20:52:51 发布

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

我如何使代码像下面的工作?我想引用一个变量,用于赋值,在封闭的函数作用域中。你知道吗

def outer():
    x = 0

    def inner():
        x += 1

    inner()

编写的代码给出了一个UnboundLocalError。我理解为什么会出现这个错误,只是不知道如何指出x来自包装作用域。你知道吗


Tags: 函数代码def错误作用域innerouter赋值
2条回答

你可以做:

def outer():
    x = [0]

    def inner():
        x[0] += 1

    inner()

你不能重新绑定一个非本地的,但是你可以改变它。你知道吗

你不能以一种干净的方式去做你所要求的。global语句没有什么可以帮助您的。您需要这样编码:

def outer():
    x = 0

    def inner(x):
        return x + 1

    x = inner(x)

这样做的另一个好处是可以明确地说明数据是如何传入和传出函数的。你知道吗

也许您需要用一个状态可以改变的对象来替换x。你知道吗

相关问题 更多 >