Python装饰器详细介绍
装饰器是Python中一种强大的编程工具,它可以用于修改、扩展或包装函数或类的行为。本攻略将详细介绍Python装饰器的概念、语法和使用方法,并提供两个示例说明。
什么是装饰器?
装饰器是一种特殊的函数,它接受一个函数作为输入,并返回一个新的函数作为输出。装饰器的作用是在不修改原函数代码的情况下,对函数的行为进行修改或扩展。
装饰器的语法
装饰器的语法使用@
符号,将装饰器函数应用于目标函数或类。下面是装饰器的基本语法:
@decorator
def function():
# 函数体
装饰器的应用场景
装饰器可以用于实现以下功能:
- 记录日志:可以在函数执行前后打印日志信息。
- 计时器:可以统计函数执行的时间。
- 缓存:可以缓存函数的计算结果,避免重复计算。
- 权限验证:可以验证用户的权限,限制函数的访问。
- 错误处理:可以捕获函数执行过程中的异常,并进行处理。
示例一:记录日志的装饰器
下面是一个示例,演示如何使用装饰器记录函数的执行日志:
def log_decorator(func):
def wrapper(*args, **kwargs):
print(f\"调用函数 {func.__name__}\")
result = func(*args, **kwargs)
print(f\"函数 {func.__name__} 执行完毕\")
return result
return wrapper
@log_decorator
def add(a, b):
return a + b
result = add(2, 3)
print(result)
输出结果:
调用函数 add
函数 add 执行完毕
5
在上面的示例中,log_decorator
是一个装饰器函数,它接受一个函数作为输入,并返回一个新的函数wrapper
。wrapper
函数在调用目标函数之前和之后打印日志信息。
示例二:计时器的装饰器
下面是另一个示例,演示如何使用装饰器实现函数的计时功能:
import time
def timer_decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
execution_time = end_time - start_time
print(f\"函数 {func.__name__} 执行时间:{execution_time}秒\")
return result
return wrapper
@timer_decorator
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
result = fibonacci(10)
print(result)
输出结果:
函数 fibonacci 执行时间:0.000123秒
55
在上面的示例中,timer_decorator
是一个装饰器函数,它接受一个函数作为输入,并返回一个新的函数wrapper
。wrapper
函数在调用目标函数之前记录开始时间,在调用目标函数之后记录结束时间,并计算函数的执行时间。
这只是装饰器的两个简单示例,实际上装饰器的应用非常广泛,可以根据需要进行灵活的扩展和定制。希望本攻略对你理解和使用Python装饰器有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python装饰器详细介绍 - Python技术站