闭包的简单使用
1、闭包的形成:
1、函数嵌套
2、内部函数使用外部函数的变量或参数
3、外部函数返回了内部函数
使用外部函数变量的内部函数称为闭包。
2、闭包的作用
闭包可以保存外部函数内的变量,不会随着外部函数调用完而销毁。
注意点:
由于闭包引用了外部函数的变量,则外部函数的变量没有及时释放,消耗内存。
类似创建了一个全局变量,只有在整个python文件执行结束之后内存才会释放(仅个人理解,有误后续修正)
3、示例
示例1
def func_out(num1: int):
a = 10
# 1、函数嵌套
def func_inner(num2: int) -> None:
# 2、使用外部函数的参数或变量
result = num1 + a + num2
print('结果是:{}'.format(result))
return result
# 3、返回内部函数
return func_inner
# 创建闭包对象
new_func = func_out(2)
new_func(10)
示例2
def config_name(name: str):
def func_inner(msg: str) -> None:
msg = '{}:{}'.format(name, msg)
print(msg)
return func_inner
xx1 = config_name('xx1')
xx1('你到北京了嘛?')
xx2 = config_name('xx2')
xx2('我到了!')
示例3:使用关键字nolocal
修改外部变量
def func_out():
num1 = 10
def func_inner() -> None:
nonlocal num1 # 注意不是global
num1 = 20
result = num1 + 10
print(result)
print('修改前的外部变量:num1={}'.format(num1))
func_inner()
print('修改后的外部变量:num1={}'.format(num1))
return func_inner
new_func = func_out()
new_func()
本文来自博客园,作者:NFTO,转载请注明原文链接:https://www.cnblogs.com/NFTO21/p/15057460.html