python返回函数

♀尐吖头ヾ 提交于 2019-11-27 05:06:26

函数作为返回值

可变参数的求和


可以不返回求和的结果,而是返回求和的函数:
不需要立刻求和,而是在后面的代码中,根据需要再计算

def sum_nums(*args):
    sum = 0
    for i in args:
        sum = sum + i
    return sum
def lazy_sum(*args):
    def sum_nums():
        ax = 0
        for i in args:
            ax = ax + i
        return ax
    return sum_nums
if __name__ == '__main__':
    print(sum_nums(1, 2, 3, 4, 5)) #15
    print(lazy_sum(1,2,3,4,5)) #<function lazy_sum.<locals>.sum_nums at 0x000001D547F8B6A8> 返回的是函数  运行的时候需要调用函数
    f1 = lazy_sum(1, 3, 5, 7, 9)
    f2 = lazy_sum(1, 3, 5, 7, 9)
    print(f1==f2)
    #False

闭包

注意到返回的函数在其定义内部引用了局部变量args,所以,当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,所以,闭包用起来简单,实现起来可不容易。另一个需要注意的问题是,返回的函数并没有立刻执行,而是直到调用了f()才执行。


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!