我有一个关于 lambda 函数的简单问题。我想做一个循环,其中每次迭代都根据前一次迭代中的 lambda 函数定义一个新的 lambda 函数。
f = lambda x: x**2
j=0
J=2
while j<J:
f2 = lambda x: 0.5*f(x)
f = f2
j+=1
我预计 f(3) 的结果为 2.25 = 0.5*0.5*3**2。但是,我收到以下错误:
RecursionError: maximum recursion depth exceeded
我以为lambda函数可以像这样灵活使用。我想有一种已知的Pythonic方法可以正确地做到这一点?
名字f
在你的 lambda 内部被查找当 lambda 被调用时- 此时它指的是 lambda 本身,因此是无限递归。
在特定时刻捕获值的常用习惯用法是使其成为 lambda 的默认参数,该参数在定义时进行评估:
f2 = lambda x, f=f: 0.5*f(x)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)