Yur*_*kee 1 python nested function
让我们说我们在python中有函数:
def _abs(iterable): #cause its normally for one element only
return [abs(i) for i in iterable]
def A(list, foo):
return foo(list)
list = [2,3,-5]
print( A(list,foo=sum) )
>> 0
Run Code Online (Sandbox Code Playgroud)
虽然我可能会foo=sum转到A,但我正在寻找一种优雅的方式来传递类似foo=sum(_abs)表演的东西sum(_abs(list)).
我现在看到它的唯一方法是发送一个函数列表[sum, _abs]并按顺序应用它们.有没有更好的办法?
或者,更一般地组成(即具有任意数量的参数函数):
from functools import partial, reduce
def compose(*funcs):
return partial(reduce, lambda x, f: f(x), reversed(funcs))
Run Code Online (Sandbox Code Playgroud)
(请参阅文档partial和reduce- 请注意,您不需要reduce在Python 2.x中导入)
然后:
>>> compose(sum, _abs)([2, 3, -5])
10
Run Code Online (Sandbox Code Playgroud)