#闭包
#闭包使用场景:由于函数内变量使用完会销毁,遇到需要保存局部变量,在变量基础上进行操作的情况需要使用闭包
#闭包可以保存函数内的变量,不会随着函数调用完而销毁,闭包可以对外部函数的变量进行保存
#1.闭包的定义:
def func_out(num1):#函数嵌套 外部函数接受不同的配置信息参数
def func_in(num2):
num = num1 + num2 #内部函数使用外部函数的变量
print(num)
return(func_in) #外部函数返回了内部函数
#创建闭包实例
f = func_out(18) #f()等价于内部函数func_in(),调用闭包即调用内部函数
f(10)
#2.闭包的使用
def name(name):
def say(info):
print(name+":"+info)
return say
tom = name("tom")
tom("你在吗?")
jerry = name("jerry")
jerry("我在!")
#3.闭包内修改外部变量
def func_out(num1):
def func_in(num2):
nonlocal num1 #修改闭包内使用的外部函数变量使用nonlocal关键字
num1 = 11 + num2
print(num1)
func_in(10)
print(num1)
return(func_in)
f = func_out(10)