Python装饰器:给函数或类增加功能

本文介绍了Python装饰器的概念,如何创建装饰器,包括手工装饰器和使用语法糖的方式,以及如何用装饰器装饰函数和类。特别讨论了累积装饰器的实现,展示了装饰器在为代码添加功能时的透明性和灵活性。
摘要由CSDN通过智能技术生成

简介

在python程序中,可以使用装饰器给不同的函数或者类插入相同的功能。于其它高级语言相比,python不仅简化了装饰器代码,而且可以快速的实现所需要的功能。同时,装饰器在为函数或者类增加功能时变得十分透明。

创建装饰器

首先,一个装饰器简单来说就是一个函数(方法),只不过装饰器函数的参数必须是一个函数或者类。然后在装饰器函数中重新定义一个新的函数或类,并且在其中执行某些功能前后或中间来使用被装饰的函数或类,最后返回这个新定义的函数或类。

使用装饰器装饰函数

(1)手工装饰器

def decorate1(fun):
    def wrapper():
        print("第一层装饰:原函数执行前的打印语句")
        fun()
        print("第一层装饰:原函数执行后的打印语句")
    return wrapper
def original_fun():
    print("原函数内容")
original_fun()#打印原来函数内容
original_fun=decorate1(original_fun)#此时原函数名指向内嵌函数wrapper,不再执行原函数
original_fun()#再用同样的原函数名打印显示的是加强版本的函数

输出:

原函数内容
第一层装饰:原函数执行前的打印语句
原函数内容
第一层装饰:原函数执行后的打印语句

(2)语法糖装饰器

可使用特殊符号"@“来实现,使用”@装饰器名称"的形式将符号"@"放在函数或类的定义行之前

def decorate1(fun):
    def wrapper():
        print("第一层装饰:原函数执行前的打印语句")
        fun()
        print
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值