Python自定义装饰器实例详解
什么是装饰器
装饰器是Python语法中的一种高级函数,它可以让已有函数或类的属性发生改变,而不修改原本函数或类的定义。
装饰器的语法
def decorator(func):
# 在这里对被装饰函数进行处理,或者添加新的功能
return func
使用装饰器的场景
装饰器主要用于在不修改原有代码的情况下,给函数附加额外的功能和特性。
装饰器示例
- 在函数外部打印该函数执行的时间:
import time
def print_time(func):
def inner(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print('函数{}的执行时间为: {}s'.format(func.__name__, end_time-start_time))
return result
return inner
@print_time
def demo_func():
time.sleep(2)
print('函数执行完成')
demo_func()
输出结果:
函数demo_func的执行时间为: 2.0011141300201416s
函数执行完成
- 计算函数的运行时长:
import time
def func_time_cost(func):
def wrapper(*args, **kwargs):
start_time = time.time()
res = func(*args, **kwargs)
end_time = time.time()
print("函数 {} 运行时间:{}".format(func.__name__, end_time-start_time))
return res
return wrapper
@func_time_cost
def test_func():
for i in range(10000):
for j in range(10000):
i*j
print("运算完成")
test_func()
输出结果:
运算完成
函数 test_func 运行时间:56.417320728302
总结
自定义装饰器是Python高级函数的一个很好的应用案例,它可以实现面向切面编程(AOP)特性。装饰器可以实现很多有趣的事情,比如处理函数的输入和输出,增加统一的异常处理,记录函数的执行时间等。使用装饰器不仅可以让代码变得更加优雅,同时还可以减少代码的重复性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 自定义装饰器实例详解 - Python技术站