嵌套函数调用的快捷方式

2 投票
1 回答
525 浏览
提问于 2025-04-18 10:11

我现在在做一个项目,里面经常需要做一些事情,比如:

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

这里有一种不同的功能性方法来处理事情。实际上,我写了一些简单的函数来说明这个方法:

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)

这就是你想要的东西吗?

撰写回答