[python面试题] 装饰器是什么,有什么功能,能用在什么业务场景?


[python面试题] 装饰器是什么,有什么功能,能用在什么业务场景?_第1张图片

业务场景

1.登录判断装饰器:

    之前做过的一个用flask框架实现的移动app项目,里面大量用到是否已经登录的判断,如果这个业务逻辑大量重复地写在视图函数,代码的复用性很差,因此我将登录判断封装成装饰器,然后用这个装饰器装饰每一个需要验证是否登录的视图函数,代码如下:


[python面试题] 装饰器是什么,有什么功能,能用在什么业务场景?_第2张图片

2.事务原子性判断装饰器

    之前用django框架做过订单提交功能,因为订单数据保存到数据库必须保持事务一致性,即所有数据要不全部提交成功,要不就回退到最开始的状态,用的是django自带的装饰器@transaction.atomic,在事务开始前打下一个点:transaction.savepoint(),相当于游戏的存档点,如果全部提交成功就保存到数据库,否则就回退到存档点;

你可能感兴趣的:([python面试题] 装饰器是什么,有什么功能,能用在什么业务场景?)