python装饰器实现aop_Python基础:AOP与装饰器的详细介绍,零基础快速入门

此篇专门写给零基础的小伙伴,希望能帮到大家~

一、方法调用前

在调用之前检查方法的参数是否合规,或者判断是否有相应的执行权限,这都是常用的手法,本例中检验第一个参数是否为正数,如果是,则执行加法,否则抛出错误,那我们可以定义如下的装饰器:

现在继续执行添加注解与调用方式,就会出现你想要的结果,如下:

二、方法调用后与装饰器参数

这一般用于对结果进行处理,如类型转换,将对象转换为JSON字符串,或者结果判断等,如下:

请记住上面的调用层次,一定是先执行参数的方法,返回没有参数的装饰函数,最后返回封装后的结果函数,等同于after(5)(before(add(a, b))),调用方式如下:

三、方法调用前后(环绕)

四、方法调用异常

这种装饰器一般用于方法调用出现异常时,所以一定会携带装饰器参数,且参数为异常类型,然后处理逻辑会放在异常捕获语句中,示例如下:

经过异常装饰器处理后,你会返现,现在3除以0也不报错了,而是返回0,所以这适合统一的异常处理。

五、装饰器的顺序

为什么呢?因为执行round函数后,返回结果与参数都为None,所以执行after函数必然出错。

六、能保留原始信息的@wraps

结论

你可能感兴趣的:(python装饰器实现aop)