在 Python 中,装饰器是一种高阶函数,用于动态地修改函数或类的行为。通过装饰器,我们可以在不改变原函数代码的情况下,增加额外功能或修改函数的行为。一个简单的装饰器示例如下:
python
Copy Code
def my_decorator(func):
def wrapper():
print("Before function is called.")
func()
print("After function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
上述代码定义了一个装饰器 my_decorator,并将其应用到函数 say_hello 上。当调用 say_hello 函数时,实际上是调用了 wrapper 函数,从而实现了在函数执行前后打印额外信息的功能。
除了以上基本的装饰器用法外,装饰器还可以用于实现日志记录、权限验证、性能计时等功能。特别是在性能优化方面,装饰器也发挥着重要作用。例如,可以通过装饰器对函数进行缓存,避免重复计算,提高程序执行效率。
python
Copy Code
import functools
def memoize(func):
cache = {}
@functools.wraps(func)
def wrapper(args):
if args not in cache:
cache[args] = func(args)
return cache[args]
return wrapper
@memoize
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(10))
在上面的例子中,我们定义了一个 memoize 装饰器,用于缓存函数的计算结果。这样,在多次调用 fibonacci 函数时,只有第一次会进行计算,后续直接返回缓存结果,避免了重复计算,提高了性能。
总之,装饰器是 Python 中非常灵活和强大
[Something went wrong, please try again later.]