python学习(3)

  python的aop:

首先,我们定义一个函数:

def my_function():
    print("this is my function")

如果,我们想在这个函数执行前以及函数执行后,分别输出"before the function run"和"after the function run",那我们可以这么写,在函数体中,插入:

def my_function():
    print("before the function run")
    print("this is my function")
    print("after the function run")

这样我们便可以实现我们想要的效果了。

但是,我们想要在很多函数中都要插入这样的代码,这样写就很麻烦,所以就有了另一种写法:

def simple_decorator(func):
    print("before the function run")
    func()
    print("after the function run")


def my_function():
    print("this is my function")


simple_decorator(my_function)

这样写,我们也能得到我们所想要的结果,但是,还是需要去修改我们的代码,那我们就需要一种更简洁的方法了。

def normal_decorator(func):
    def wrapper():
        print("before the function run")
        func()
        print("after the function run")
    return wrapper()


def my_function():
    print("this is my function")


my_function = normal_decorator(my_function)
my_function

我们通过在修饰函数中,再加一个包装函数,将我们所想要包装的函数,进行一次包装,再去运行,这样,就能更方便的去得到我们所想要的结果,并且不对原本的代码进行较大的修改。虽然这种方法已经足够的方便了,但是,如果这个函数要调用很多次,我们则需要去给它修饰很多次,所以,就有了更加方便的写法:

def normal_decorator(func):
    def wrapper():
        print("before the function run")
        func()
        print("after the function run")
    return wrapper()


@normal_decorator
def my_function():
    print("this is my function")


my_function

 

posted @ 2019-08-05 16:09  可乐遇上雪碧  阅读(144)  评论(0编辑  收藏  举报