Python之装饰器的写法
在Python中,装饰器是一种用于修改或增强函数或类的行为的语法结构。装饰器可以在不修改原始函数或类定义的情况下,动态地添加功能或修改行为。以下是Python装饰器的详细攻略,包括两个示例。
示例1:装饰器的基本语法
以下是装饰器的基本语法:
def decorator(func):
def wrapper(*args, **kwargs):
# 在调用原始函数之前执行的代码
result = func(*args, **kwargs)
# 在调用原始函数之后执行的代码
return result
return wrapper
@decorator
def my_function():
# 原始函数的代码
pass
在这个示例中,我们定义了一个名为decorator的装饰器函数。装饰器函数接受一个函数作为参数,并返回一个新的函数wrapper。wrapper函数包装了原始函数,并在调用原始函数之前和之后执行一些代码。最后,我们使用@符号将装饰器应用于my_function函数。
示例2:带参数的装饰器
以下示例演示如何编写带参数的装饰器:
def repeat(num):
def decorator(func):
def wrapper(*args, **kwargs):
for i in range(num):
result = func(*args, **kwargs)
return result
return wrapper
return decorator
@repeat(num=3)
def my_function():
print("Hello, World!")
my_function()
在这个示例中,我们定义了一个名为repeat的装饰器函数,它接受一个参数num。repeat函数返回一个decorator函数,decorator函数接受一个函数作为参数,并返回一个新的函数wrapper。wrapper函数包装了原始函数,并在调用原始函数之前和之后执行一些代码。在这个示例中,我们使用@repeat(num=3)语法将装饰器应用于my_function函数,表示my_function函数将被重复调用3次。
结论
Python装饰器是一种用于修改或增强函数或类的行为的语法结构。装饰器可以在不修改原始函数或类定义的情况下,动态地添加功能或修改行为。在Python中,我们可以使用装饰器来实现各种功能,例如日志记录、性能分析、缓存等。