当先锋百科网

首页 1 2 3 4 5 6 7

Python 装饰器是一种很有用的语言特性,它允许在不修改被装饰函数源代码的情况下,向函数添加额外的功能。装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个新函数,新函数就是被装饰函数的增强版。

在使用装饰器时,通常会采用以下形式的语法:

def decorator(func):
def wrapper(*args, **kwargs):
# add extra functionality here
return func(*args, **kwargs)
return wrapper
@decorator
def my_func():
pass

上述代码定义了一个名为decorator的装饰器函数,它接受一个函数作为参数func,并返回一个包装函数wrapper。包装函数wrapper实现了额外的功能,并在最后调用被装饰函数func。最后通过@decorator的形式将decorator装饰器应用到my_func函数上。

有了装饰器,我们可以轻松地实现代码的重用和简化。例如,如果我们有多个函数都需要实现一些通用的功能,我们可以定义一个装饰器来实现这个功能,并将它应用到这些函数上。

def debug(func):
def wrapper(*args, **kwargs):
print(f"Calling {func.__name__}")
return func(*args, **kwargs)
return wrapper
@debug
def add(a, b):
return a + b
@debug
def sub(a, b):
return a - b
result = add(2, 3)
print(result)
result = sub(2, 3)
print(result)

上述代码定义了一个名为debug的装饰器函数,它会在函数被调用时自动输出被调用函数的名称。然后我们将它应用到两个函数addsub上,这两个函数分别实现了加法和减法操作。最后我们分别调用这两个函数,并打印输出结果。

运行上述代码,输出结果如下:

Calling add
5
Calling sub
-1

可以看到,我们并没有修改函数addsub的源代码,却实现了对它们的增强操作,并输出了函数的调用信息。这就是装饰器的强大之处。