Python - 嵌套函数调用的快捷方式

时间:2014-06-18 09:15:47

标签: python

我目前正在开展一个项目,我经常需要做以下事情:

map(lambda r: f(g(h(r))), mylist)

目前我已创建此课程:

class NestedCalls(object):
    def __init__ (self, *args):
        self.__fn = list(args)
        self.__fn.reverse()
    def __call__ (self, *args, **kargs):
        v = self.__fn[0] (*args, **kargs)
        for f in self.__fn[1:]:
            v = f (v)
        return v

然后我就这么做:

map(NetstedCalls(f, g, h), mylist)

哪个效果很好,但我想知道是否有内置工具可以做同样的事情?我一直在浏览python文档,但遗憾的是我并不是真的如何命名这样的工具/类。

1 个答案:

答案 0 :(得分:0)

这是一种替代功能的方法。实际上去构建简单的函数来说明它:

def plus1(a):
    return a+1
def minus3(a):
    return a-3
def or5(a):
    return a*5

# this one could be skipped
def apply(a,b):
    return b(a)

reduce(apply,[plus1,or5,minus3],10)
# without apply
reduce(lambda a,b: b(a),[plus1,or5,minus3],10)

这是你在找什么?