我想要一个名为 的函数times()
,以便:
times(func,2)
相当于lambda x:func(func(x))
times(func,5)
相当于_lambda x:func(func(func(func(func(x)))))
Python中有这样的工具吗?如果我想自己写代码会是什么样子?
谢谢!
我想要一个名为 的函数times()
,以便:
times(func,2)
相当于lambda x:func(func(x))
times(func,5)
相当于_lambda x:func(func(func(func(func(x)))))
Python中有这样的工具吗?如果我想自己写代码会是什么样子?
谢谢!
我建议调用 this power()
,因为这实际上n
是函数的力量。标准库中没有这样的东西,但是你可以很容易地自己实现它:
def power(f, n):
def wrapped(x):
for i in range(n):
x = f(x)
return x
return wrapped
谢谢,斯文
我找到了一种递归方式来做到这一点,但你的看起来更像pythonic:
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
还有一种用装饰器实现的方法:
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