访问嵌套函数内部的外部函数元素

时间:2019-05-12 19:57:52

标签: python memory global python-nonlocal

我的代码有问题。因为我无法从嵌套函数内部的外部函数访问列表。我尝试了非本地操作,但它给我一个错误“发现非本地“ a”没有绑定。

def func(x, y):
        nonlocal a
        nonlocal b
        if x >= 0 and y >= 0:
            if x == 0 and y == 0:
                return (func(x - 1, y - 1) + a[x] * b[y])

            else:
                return max(func(x - 1, y - 1) + a[x] * b[y], func(x - 2, y) + a[x - 1] * a[x], func(x, y-2) + b[y - 1] * b[y])
        elif x >= 1 and y < 0:
            return func(x - 2, y) + a[x - 1] * a[x]

        elif y >= 1 and x < 0:
            return func(x, y-2) + b[y - 1] * b[y]
        else:
            return 0

def tvshows(a, b):

    x = func(len(a) - 1, len(b) -1)
    return x

test_a = [23,45, 12, 16]
test_b = [33,13, 17, 18]

tvshows(test_a, test_b)

有人知道这个问题可能是什么吗? 最好的问候

1 个答案:

答案 0 :(得分:0)

nonlocal要求变量已被定义

我在您的代码中看不到任何嵌套函数。但是您可以在嵌套函数(而非外部函数)中使用nonlocal来引用先前定义的列表。