Python中的闭包与装饰器

本文深入探讨Python装饰器的概念与应用,介绍装饰器如何通过闭包为原有函数添加新功能而不修改其代码,列举多种实际场景如计时、权限验证等,并解析闭包的基本原理。

装饰器

装饰器本质上是⼀个python函数,装饰器的实现是由闭包支撑的,在不改变原函数代码的前提下为函数增加额外的功能,装饰器的返回值也是⼀个函数的对象

应用场景:

1.可以在外层函数加上时间计算函数,计算函数运行时间;

2.计算函数运行次数;

3.可以用框架的路由传参;

4.插入日志,作为函数的运行日志;

5.缓存,实现缓存处理;

6.权限的校验,在函数外层套上权限校验的代码,实现权限校验;

7.事务处理,可以让函数实现事务的一致性,让函数要么一起运行成功,要么一起运行失败;

闭包     

闭包概念:在一个内部函数中,对外部作用域的变量进行引用,(并且一般外部函数的返回值为内部函数),那么内部函数就被认为是闭包。举个栗子先:

在函数startAt中定义了一个incrementBy函数,incrementBy访问了外部函数startAt的变量,并且函数返回值为incrementBy函数(注意python是可以返回一个函数的,这也是python的特性之一)

上面代码中a其实就是一个函数,上面代码执行的结果:

从结果我们不难看出,a是函数incrementBy而不是startAt这个有点绕,但是并不难理解,因为return回来的是incrementBy函数。

输出是:

如果调用函数a的话,得到的结果是传入参数的整数值加。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值