在Python中,装饰器是一种函数,它可以接受另一个函数作为参数,并且在不修改该函数源代码的情况下,添加一些额外的功能。
装饰器的语法通常是使用 @ 符号,它放在被装饰函数的上方。
装饰器可以用于很多场景,比如:
下面是一个简单的例子,展示如何使用装饰器来给函数添加日志:
python def log(func): def wrapper(*args, **kwargs): print(f"Calling function {func.__name__} with args {args} and kwargs {kwargs}") return func(*args, **kwargs) return wrapper @log def foo(x): return x * 2 result = foo(3) print(result)
在这个例子中,我们定义了一个名为 log 的装饰器函数。它接受一个函数作为参数,并返回一个新的函数 wrapper。wrapper 函数包装了原始函数,它会打印日志并调用原始函数。
在使用装饰器时,我们使用 @log 来装饰 foo 函数。这相当于执行了以下代码:
python foo = log(foo)
最后,我们调用 foo 函数,并打印其输出结果。输出如下:
Calling function foo with args (3,) and kwargs {} 6