python之闭包(Closure) 详细注解

闭包函数:

def sum_late(*args):

    def cals_sum():
        ax = 0
        for i in args:
            ax = ax + i
        return ax                                 # 这里返回了一个阶层相加的结果

    return cals_sum                        # 这里返回内部函数

print(sum_late(1, 2, 3, 4))          # 给外部函数传入一个元组,返回一个内部函数(注意这里返回的是一

                                                            个函数不是一个值)

cals_sum = sum_late(1, 2, 3, 4)  # 把外部函数的值赋值给内部函数,执行这个函数,最后返回一个相

                                                                加的结果

print(cals_sum())                              # 这里输出一个循环累加的结果

执行的结果为:

>>>  <function sum_late.<locals>.cals_sum at 0x7f087f671730>

扫描二维码关注公众号,回复: 424622 查看本文章

>>> 10

函数称之为闭包,因为在函数sum_late中又定义了函数cals_sum,并且内部函数cals_sum可以引用外

部函数sum_late的参数和局部变量.当sum_late返回函数cals_sum时,相关参数和变量都保存在返回

的函数中,所以称为闭包.

猜你喜欢

转载自my.oschina.net/u/3846740/blog/1810135