python闭包和装饰器、登录认证_python中闭包和装饰器

前言:

编程语言发展的过程中,我们为了提高代码利用率,发明了函数式编程。函数将代码封装起来,我们需要用到此功能函数的时候,调用一下就可以了。但是使用的过程中,也遇到了一些问题,比如函数实现的功能不够,或者跟我们要实现的功能有些差别。肿么办呢?打开函数内部代码,重新写?可以吗?可以!但是这就违背了函数式编程思想的初衷,代码没有重复利用,而且还破坏了原有函数代码。怎么办?聪明的人类思想的灯泡再次闪亮,咔嚓一声霹雳响,闭包和装饰器诞生了!

闭包:

闭包的定义:

外部函数中定义了一个内部函数

内部函数中使用了外部函数的变量

外部函数将内部函数作为返回值返回

举例:

defwai(x):defnei():print(x)returnnei

a= wai(3)()

在这个函数中,内部函数nei使用了外部函数的变量X,外部函数wai将内部函数作为返回值返回了。结果是3。a = wai(3)实际上是等同于a = nei ,后面价格括号,才是调用了函数nei。这就是为什么是a = wai(3)()

闭包知道咋回事了,那么它实际意义是啥呢?装饰器就是它的实际应用

装饰器:

装饰器本身是一个闭包,只不过外部函数的变量变成了一个函数名。

举例:

#定义装饰器

defzhuang_xiu(fun):defnei():print('吊顶')

fun()print('地毯')returnnei#要被装饰器装饰的函数

defnew_house():print('新房')print('使用装饰器前:')

new_house()#使用装饰器

print('使用装饰器后:')

@zhuang_xiudefnew_house():print('新房')

new_house()

运行结果:

使用装饰器前:

新房

使用装饰器后:

吊顶

新房

地毯

这样,我们就在没有改变newhouse函数源代码的前提下,增加了功能,实现了我们的目的。大家理解了吗?不理解可以评论联系我哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值