Python lambda 自组合函数:如何return 一个重复n 次的函数?

Python lambda self composing function: How to return a function that is repeated n amount of times?

函数 self_compose(x,y) 将可调用语句 x 和整数 y 作为参数。

此函数然后 returns 另一个可调用函数,其结果是 有 x 次调用自己 y 次 即

sc = self_compose (lambda x : x*3, 3) # => ( ( (x*3) * 3) *3 )

sc(2) # = 54  

问题是如何在不使用递归的情况下在 lambda 中创建 lambda?

可读的选择

确实不需要递归或嵌套 lambdas,您可以简单地通过创建 self_compose 来定义和 return,一个简单调用提供的 回调 n 次的函数。

def self_compose (cb, n): 
    def __worker (val):
        for _ in range (n):
            val = cb (val)
        return val 

    return __worker
sc = self_compose (lambda x: x*3, 3)

if sc(2) == 54:
  print ("SUCCESS")
SUCCESS

“我喜欢单行本”

当然,您可以使用以下内容一次性创建它:

from functools import partial, reduce
self_compose = lambda cb,n: partial (reduce, lambda v,cb: cb(v), [cb]*n)
if self_compose (lambda x: x+x, 3) ('B') == "BBBBBBBB":
   print ("SUCCESS")
SUCCESS