Python闭包教程
闭包就是一个
在
闭包的记忆功能
在 Python 中,被捕获到闭包中的变量让闭包本身拥有了记忆效应,闭包中的逻辑可以修改闭包捕获的变量,变量会跟随闭包生命期一直存在,闭包本身就如同变量一样拥有了记忆功能。
Python闭包定义详解
语法
def func(param):
def func_inner(base):
pass
return func_inner
说明
我们定义了一个函数 func,同时,在函数 func 内部又定义了一个局部函数 func_inner,最后,我们在函数 func 里面返回了函数 func_inner。
这样,我们在函数里面返回了一个局部函数,就构成了一个闭包。
案例
Python闭包记忆效应
Python 闭包记忆效应,实现累加
print("嗨客网(www.haicoder.net)")
def add_upper():
n = 20
def add(x):
nonlocal n
n = n + x
return n
return add
# Python 闭包记忆效应,实现累加
f = add_upper()
print("闭包返回:", f(1))
print("闭包返回:", f(2))
print("闭包返回:", f(3))
程序运行后,控制台输出如下:
我们定义了一个 add_upper 函数,该函数返回的数据类型是一个局部函数,该局部函数引用到函数外的 n,因此这个局部函数就和 n 形成了一个整体,构成了闭包。
我们反复调用 f 函数时,因为 n 只初始化一次,因此每调用一次就累计一次。
Python闭包
Python 闭包,实现判断文件后缀
print("嗨客网(www.haicoder.net)")
def make_suffix(suffix):
def func_suffix(name):
if not name.endswith(suffix):
return name + suffix
return name
return func_suffix
# Python闭包,实现判断文件后缀
f = make_suffix(".jpg")
print("FileName =", f("sea"))
print("FileName =", f("sun.jpg"))
程序运行后,控制台输出如下:
我们定义了一个 make_suffix 函数,该函数传入一个
返回的局部函数和 suffix 变量组成了一个闭包,因为返回的额函数引用到了 suffix 变量。
Python闭包总结
闭包就是一个函数和与其相关的引用环境组合的一个整体。
在 Python中,被捕获到闭包中的变量让闭包本身拥有了记忆效应,闭包中的逻辑可以修改闭包捕获的变量,变量会跟随闭包生命期一直存在,闭包本身就如同变量一样拥有了记忆功能。