学习Java的都知道Java 中有面向切面的编程,也就是aop,说白了就是在你原来的代码执行前做一些操作,这样的好处就是不修改原来的代码逻辑,增强程序的功能,很方便。人生苦短,我用python,python中也有同样的功能,而且更方便,这个功能就是装饰器
1、无参数装饰器
无参的装饰器是最简单的,万事开头难,先挑个简单的下手,不要慌,慢慢来。
def aop(func):
print("begin----------")
func()
print("end-----------")
@aop
def funcMethod():
print("run ")
# 执行结果
#begin----------
#run
#end-----------
可以看到语法就是在需要装饰的函数上使用@aop ,aop 表示装饰器的函数,很简单对不对。。。
2、装饰有参数的函数
有参数的函数才是开发中的常态,所以怎么实现对有参数的构造函数进行装饰
def aop(func):
def wrap(p1):
print("开始")
func(p1)
print("结束")
return wrap
@aop
def funcMethod(p1):
print(p1)
funcMethod("执行")
可以看到这次比第一个例子稍微复杂一些,但是也能看出装饰器的底层原理,
想要修饰一个参数的函数,为此我们