python怎么闭包_Python闭包

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))

程序运行后,控制台输出如下:

e51992faca1a4e8c2838856141efe8c6.png

我们定义了一个 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"))

程序运行后,控制台输出如下:

abb364fa055d5075189b82468fbe21b2.png

我们定义了一个 make_suffix 函数,该函数传入一个

返回的局部函数和 suffix 变量组成了一个闭包,因为返回的额函数引用到了 suffix 变量。

Python闭包总结

闭包就是一个函数和与其相关的引用环境组合的一个整体。

在 Python中,被捕获到闭包中的变量让闭包本身拥有了记忆效应,闭包中的逻辑可以修改闭包捕获的变量,变量会跟随闭包生命期一直存在,闭包本身就如同变量一样拥有了记忆功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值