van rossum programacion perezosa lenguaje guido funcional evaluacion ejemplo descargar caracteristicas python function recursion functional-programming

rossum - ¿Cómo construir una herramienta de programación funcional en Python?



python descargar (2)

Quiero una función llamada times() , para hacer:

times(func,2) equivalente a lambda x:func(func(x))

y times(func,5) equivalentes a lambda x:func(func(func(func(func(x)))))

¿Hay tal herramienta en Python? ¿Cómo se vería el código si quisiera escribirlo solo?

¡Gracias!


Sugeriría que se llame a esta power() , ya que esta es realmente la n ésima potencia de una función. No existe tal cosa en la biblioteca estándar, pero puede implementarla usted mismo fácilmente:

def power(f, n): def wrapped(x): for i in range(n): x = f(x) return x return wrapped


Gracias, Sven

Encontré una forma recursiva de hacerlo, pero la tuya parece más pitonica:

def power(func, n): def lazy(x, i=n): return func(lazy(x, i-1)) if i > 0 else x return lazy >>> power(lambda x:x*2,3)(9) 72 >>> power(lambda x:x*2,2)(9) 36 >>> power(lambda x:x*2,1)(9) 18 >>> power(lambda x:x*2,0)(9) 9

Y una forma implementada con Decorator:

def powerize(n): def wrapped(func): def newfunc(*args): return power(func,n)(*args) return newfunc return wrapped @powerize(3) def double_3(x): return x*2 >>> double_3(8) 64