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

装饰器可以理解为是一个控制过程,这个控制过程需要函数作为参数。一个函数加了控制过程之后,这个函数执行前后控制过程都能够做一些处理。有点类似于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()

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

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





本人是做大数据开发的,在微信上开了个个人号,会经常在上面分享一些学习心得,原创文章都会首发到公众号上,感兴趣的盆友可以关注下哦!
Python自学成才之路 装饰器编程之初试装饰器_第1张图片
备注:微信公众号搜索‘大数据入坑指南’!

你可能感兴趣的:(python)