python装饰器最典型的应用_python装饰器的应用场景

本文介绍了Python装饰器在不同场景中的应用,如记录日志、统计函数执行时间、执行前后的预备和清理、权限验证、缓存以及事务处理。示例中展示了如何定义装饰器实现日志功能,并提及Django框架中装饰器在中间件中的使用。
摘要由CSDN通过智能技术生成

装饰器的应用场景

1,引入日志

2,函数执行时间统计

3,执行函数前预备处理

4,执行函数后清理功能

5,权限校验等场景

6,缓存

7,事务处理

import time

def my_log(my_print):

def out(func):

@wraps(func)

def wrap(*args, **kwargs):

my_print(name=kwargs['name'], inp=kwargs['inp'])

result = func(*args, **kwargs)

return result

return wrap

return out

def my_print(*args, **kwargs):

# %Y Year with century as a decimal number.

# %m Month as a decimal number [01,12].

# %d Day of the month as a decimal number [01,31].

# %H Hour (24-hour clock) as a decimal number [00,23].

# %M Minute as a decimal number [00,59].

# %S Second as a decimal number [00,61].

current_day_time = time.strftime('%Y-%m-%d', time.localtime(time.time()))

current_time_time = time.strftime('%H:%M:%S', time.localtime(time.time()))

with open(f'{current_day_time}操作日志.txt', 'a', encoding='utf-8') as f:

f.write(f'{current_time_time}:操作人:{kwargs["name"]},操作方式:{kwargs["inp"]}\n')

@my_log(my_print=my_print)

def operation(*, name, inp):

print('操作成功!')

PS: Django在1.7版本之后,官方建议,中间件的写法也采用装饰器的写法

def simple_middleware(get_response):

def middleware(request, *args, **kwargs):

response = get_response(request, *args, **kwargs)

return response

return middleware

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值