一个被忽略的python自定义装饰器模块-decorator!

一般的python装饰器函数的实现都是需要通过开发嵌套函数来完成,有时候装饰器函数的长相实在和原函数相差甚大。

也不利于查看原函数的实现逻辑,decorator模块提供了自己的装饰器接口只需要在自定义的函数上面加上该装饰器就能轻松实现自定义的装饰器接口。

1.常规的自定义装饰器

我们通过一个简单的函数嵌套来说明不使用任何的python非标准模块来实现一个装饰器。

开发一个名称为test的装饰器,并在该test函数中加入子函数执行,这样一个自定义的装饰器就完成了。

def test(func):
    def wrapper(*args, **kw):
        print("开始执行装饰器的函数内容!")
        func(*args, **kw)
        print("完成执行装饰器的函数内容!")

    return wrapper

开发一个函数func_,在该函数上面引入自定义好的@test装饰器就能完成自定义装饰器的引用。

@test
def func_():
    print("func_ is running!")

func_()

# 开始执行装饰器的函数内容!
# func_ is running!
# 完成执行装饰器的函数内容!
#
# Process finished with exit code 0

2.decorator装饰器

使用decorator装饰器就不用再通过嵌套函数的方式来开发自定义的装饰器了,避免自定义的装饰器源代码可读性比较低。

使用它来做自定义的装饰器首先我们需要安装一下decorator模块,使用pip的方式安装即可。

pip install decorator

decorator安装完成之后,将所需的模块导入到我们的代码块中即可。

from decorator import decorator

为了和上面的自定义装饰器的代码块相互对应,我们还是创建一个功能相同的装饰器。

@decorator
def test2(func, *args, **kw):
    print("开始执行装饰器的函数内容!")
    func(*args, **kw)
    print("完成执行装饰器的函数内容!")

自定义的装饰器使用方式还是和原来一样,直接将自定义装饰器test2添加到func_2函数上面。

@test2
def func_2():
    print("func_ is running!")

func_2()

# 开始执行装饰器的函数内容!
# func_ is running!
# 完成执行装饰器的函数内容!

这样得到的函数执行结果和原始的嵌套自定义方式是一样的,并且通过@decorator装饰器定义的装饰器更加具有可读性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python 集中营

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值