访问嵌套的外部函数元素
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
来引用先前定义的列表。
【讨论】:
以上是关于访问嵌套的外部函数元素的主要内容,如果未能解决你的问题,请参考以下文章