如何解决一个函数,它从创建的前一帧返回相同的函数
假设我有以下文档测试:
>>> a = stack()
>>> take,bake = a(2)
>>> take1,bake1 = bake(3)
>>> take2,bake2 = bake1(4)
>>> take2(2)
'Yes'
到目前为止我所拥有的是:
def stack():
def store(a):
def evaluate(b):
if b == a:
return 'Yes'
#else return evaluate from the previous frame
return evaluate,store
return store
我知道当函数存储被调用时,从 doctest 中的 a(2) 说。一个框架将为函数存储打开,a = 2 并在该框架中定义函数评估 。 如果我们比较 该框架 中函数评估的 a 和 b 的值>,a 是 2,b 是用户提示的任何内容。
我正在尝试查看适合evaluate的return语句的内容,如果不是a == b,它将从定义它的前一帧调用evaluate函数,并且查看当前帧的b是否与上一帧的a匹配。
我试图理解的想法来自我编程课上的一个例子:
def stacklist():
"""
>>> append,get = stacklist()
>>> get,y = append(2)
>>> get,y = append(3,get,y)
>>> get,y = append(4,y)
>>> get(0)
2
>>> get(1)
3
>>> get(2)
4
>>> get,y = append(8,y)
>>> get(1)
3
>>> get(3)
8
"""
g = lambda i: "Error: out of bounds!"
def f(value,g=g,y=0):
f = g
def g(i):
if i == y:
return value
return f(i)
return g,y + 1
return f,g
在 pythontutor 中运行时,我发现存储的值不是通过列表或任何可变容器而是通过使用框架范围,这真的很有趣。尽管这是我正在尝试做的一个非常具体的案例。我正在寻找一种通用的方法来通过一遍又一遍地调用我的函数来存储值而不使用可变容器。也很好奇它是怎么做到的。
如果有人可以详细说明这种技术并帮助我完成上面的 stack() 代码,我将不胜感激!也感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。