Python自学成才之路 装饰器编程之初试装饰器

本文深入解析Python装饰器的工作原理,通过实例展示如何使用类创建装饰器,解释装饰器执行流程,以及如何处理函数参数和装饰器参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

装饰器可以理解为是一个控制过程,这个控制过程需要函数作为参数。一个函数加了控制过程之后,这个函数执行前后控制过程都能够做一些处理。有点类似于java里面的aop。

为了方便理解,先用类来创建一个装饰器。

class my_decorator(object):

    def __init__(self, f):
        print("进入到装饰器 __init__()")
        f()

    def __call__(self):
        print("进入装饰器 __call__()")

@my_decorator
def myFunction():
    print("进入函数")

myFunction()

输出:
进入到装饰器 __init__()
进入函数
进入装饰器 __call__()

一个类要想被用来做装饰器,必须是callable,可被调用的。而类想要做到可被调用就需要实现__call__方法。

怎么去理解这个装饰器执行过程,myfunction函数加了装饰器后,执行myFunction()等价于下面的代码:

my_decorator = my_decorator(myFunction)
my_decorator()

也就是加了装饰器的函数在执行时,实际上是先用函数作为参数去初始化这个类得到类实例,然后再执行类实例。

上面的是一个简单的装饰器案例,如果想给函数传递参数或者给装饰器本身传递参数改怎么做呢?





本人是做大数据开发的,在微信上开了个个人号,会经常在上面分享一些学习心得,原创文章都会首发到公众号上,感兴趣的盆友可以关注下哦!
在这里插入图片描述
备注:微信公众号搜索‘大数据入坑指南’!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值