访问嵌套的外部函数元素

Posted

技术标签:

【中文标题】访问嵌套的外部函数元素【英文标题】:Accessing the outer function element inside the nested one 【发布时间】:2019-09-29 20:39:10 【问题描述】:

我的代码有问题。因为我无法从嵌套函数内部的外部函数访问列表。我尝试了非本地,但它给了我一个错误“发现非本地“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】:

nonlocal 要求变量之前已经定义过

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

【讨论】:

以上是关于访问嵌套的外部函数元素的主要内容,如果未能解决你的问题,请参考以下文章

如何从 main() 函数外部访问 argv[]?

嵌套函数和闭包

内部函数能够访问外部函数的局部变量,这个特性是闭包(Closure)编程的基础

JavaScript 闭包浅析

在 C++ 中从外部访问嵌套类

在 Netezza 的嵌套查询中无法访问外部表