闭包就是外部函数中定义一个内部函数,内部函数引用外部函数中的变量,外部函数的返回值是内部函数
闭包特征:
1、嵌套函数
2、内层函数引用了外层函数变量或参数
3、内层函数作为返回值返回给外层函数
示例1:
# 定义外层函数
def outdef(outparm):
# 定义内层函数
def indef(inparm):
# 引用了外部函数的变量
return outparm + inparm
# 将内部函数作为返回值
return indef
cal = outdef(4)
# 执行内部函数
print(cal(3))
示例2:
def outcounter(name):
# 定义列表,相当于计数器
count = [0]
def incounter():
# 每调用内部函数一次,列表的元素0就加一
count[0] += 1
print("内容:{}—第{}次调用".format(name,count[0]))
return incounter
strs = outcounter("hello")
strs() # 内容:hello—第1次调用
strs() # 内容:hello—第2次调用
strs() # 内容:hello—第3次调用