首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python成长日记-初识装饰器

装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。

它常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。

装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。

概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。

首先我们看一个简单的例子:

我们实现了一个简单的函数:

若此时,我们有了一个新的需求:打印hello并且打印日志

那么可能大家都会想到,我添加一行打印日志的代码不就行了吗?

不难发现,我们可以实现

假如你有几十个函数都需要添加日志,那么你就必须把每个日志都找到,然后一行一行地添加代码,这样就会造成大量的重复代码,我们会不会在不动原函数的前提下实现我们的功能?

开放封闭原则:

对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。

对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。

这时可能有人想到了,我再创建个函数然后调用这个函数就可以实现,而且减少了代码重复

相当于我们之前是使用info()函数实现打印,现在又要使用logger()函数实现,若是别人不知道logger这个函数,只知道有info这个函数,他只想调用info这个函数

dangdangdang~~装饰器就要登场了

其实,python为我们提供了一个更简单的方式,使用(@装饰器函数)即可

但是装饰器函数必须写在你要使用的函数之前,否则就找不到你的装饰器函数

扩展:若我们的函数是个带参函数且有返回值,那么我们装饰器部分的形参可以使用*args和**kwargs

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171231G07MVL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券