闭包函数:
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>
>>> 10
函数称之为闭包,因为在函数sum_late中又定义了函数cals_sum,并且内部函数cals_sum可以引用外
部函数sum_late的参数和局部变量.当sum_late返回函数cals_sum时,相关参数和变量都保存在返回
的函数中,所以称为闭包.