开发者学堂课程【Python 语言基础 3:函数、面向对象、异常处理:闭包】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:
https://developer.aliyun.com/learning/course/601/detail/8737闭包
目录
一、 闭包的定义
二、 形成闭包的条件
一、闭包的定义
#将函数作为返回值返回,是一种高阶函数
#这种高阶函数被称为闭包,通过闭包可以创建一些只有当前函数能访问的变量
#可以将一些私有的数据藏到闭包中
d
ef fn():
a = 10
#函数内部再定义一个函数
def inner():
print(‘
我是f
n2’, a )
#将内部函数 inner 作为返回值返回
return inner
#r 是一个函数,是调用fn()后返回的函数
#这个函数是在 fn() 内部定义,不是全局函数
# 这个函数能访问到 fn() 函数内的变量
r
= fn()
#
r()
#求多个数的平均值
n
ums = [50,30,20,10,77]
# sum() 用来求一个列表中所有元素的和
p
rint(sum(nums))
二丶形成闭包的条件
#形成闭包的要点:
#1.函数嵌套
#2.将内部函数作为返回值返回
#3.内部函数必须要使用外部函数的变量
求列表中所有元素的平均值
p
rint(sum(nums)/
len
())
#创建一个列表,用来保存数值
nums
= []
#创建一个函数,用来结算平均值
d
ef averager(n):
#将n添加到列表中
nums.append(n)
#求平均值
return sum(nums)/len(nums)
p
rint(averager(10))
p
rint(averager(10))
p
rint(averager(30))
p
rint(averager(30))
nums
= []
d
ef make_averager():
d
ef averager(n):
nums.append(n)
return sum(nums)/len(nums)
r
eturn average
average = make_averager()
p
rint(average(10))
p
rint(average(20))
p
rint(average(30))
p
rint(average(40))