Puede darse el caso de que encuentres algún problema con tu código o proyecto, recuerda probar siempre en un ambiente de testing antes aplicar el código al proyecto final.
Solución:
No puede replicar la sintaxis exacta, pero puede hacer algo similar:
def f(*args):
result = args[0]
for func in args[1:]:
result = func(result)
return result
Parece funcionar:
>>> f('a test', reversed, sorted, ''.join)
' aestt'
No puede obtener esa sintaxis exacta, aunque puede obtener algo como F(x)(foo, bar, baz)
. Aquí hay un ejemplo simple:
class F(object):
def __init__(self, arg):
self.arg = arg
def __call__(self, *funcs):
arg = self.arg
for f in funcs:
arg = f(arg)
return arg
def a(x):
return x+2
def b(x):
return x**2
def c(x):
return 3*x
>>> F(2)(a, b, c)
48
>>> F(2)(c, b, a)
38
Esto es un poco diferente de la respuesta de Blender, ya que almacena el argumento, que luego se puede reutilizar con diferentes funciones.
Esto es algo así como lo opuesto a la aplicación de función normal: en lugar de especificar la función por adelantado y dejar que algunos argumentos se especifiquen más adelante, usted especifica el argumento y deja que la(s) función(es) se especifique(n) más tarde. Es un juguete interesante, pero es difícil pensar por qué realmente querrías esto.