Python返回函数

函数作为返回值

高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。

先举个栗子,要实现一个可变参数的函数求和,通常这么写:

def calc_sum(*args):
    ax = 0
    for n in args:
        ax += n
    return ax

那么,如果不需要立刻求和,而是在后面的代码中,根据需要再去计算那怎么办呢?这时候就可以不返回求和的结果,而是返回求和的函数,如下:

def lazy_sum(*args):
    def sum():
        ax = 0
        for n in args:
            ax += n
        return ax
    return sum

这时候,我们调用lazy_sum()的时候,返回的不是结果,而是求和的函数。这个在上一篇讲filter()函数的时候,里面有个例子是求:给出范围内所有的素数。里面有一个筛选函数,返回的就是一个函数。点击跳转

上面的函数还有个要注意的地方是这样,当调用lazy_sum()时,每次调用都会返回一个全新的函数,即便传入相同的参数:

>>> f1 = lazy_sum(10, 333, 15, 27, 89)
>>> f2 = lazy_sum(10, 333, 15, 27, 89)
>>> f1==f2
False

f1()和f2()的调用结果互不影响。

猜你喜欢

转载自blog.csdn.net/qq_35612929/article/details/81130881