我有一个关于lambda函数的简单问题。我想做一个循环,其中每次迭代都定义一个基于前一次迭代的lambda函数的新lambda函数。python中递归地定义函数
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如何正确地做到这一点?
是否还有一种方法可以使用'def'而不是'lambda'来执行此操作? – splinter
当然,与默认参数相同的技巧也适用于常规功能。请记住,lambdas不会为Python添加任何实际的新功能,它们只是定义真正简单函数的捷径。 – jasonharper