Python 装饰器是一种非常有用的特性,它允许程序员在不修改函数代码的情况下,增加额外的功能。下面,我们将深入探讨 Python 装饰器的概念、用法以及它们在实际开发中的应用。

装饰器的基本概念

装饰器是一个接受函数作为参数并返回一个新函数的函数。简单来说,装饰器就是给一个函数添加额外的功能。

示例

def my_decorator(func):
    def wrapper():
        print("Something is happening before the function is called.")
        func()
        print("Something is happening after the function is called.")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()

在上面的例子中,my_decorator 是一个装饰器,它接受 say_hello 函数作为参数,并返回一个新的函数 wrapper。当我们调用 say_hello() 时,实际上是在调用 wrapper()

装饰器的应用

装饰器可以用于实现日志记录、计时、权限校验等功能。下面是一些常见的装饰器应用场景:

  • 日志记录:记录函数的调用情况。
  • 权限校验:确保只有具有相应权限的用户才能执行某些操作。
  • 计时:测量函数执行时间。

日志记录

def log_decorator(func):
    def wrapper(*args, **kwargs):
        print(f"Calling {func.__name__} with arguments {args} and keyword arguments {kwargs}")
        result = func(*args, **kwargs)
        print(f"{func.__name__} returned {result}")
        return result
    return wrapper

@log_decorator
def add(a, b):
    return a + b

add(3, 4)

权限校验

def admin_required(func):
    def wrapper(*args, **kwargs):
        if not is_admin():
            print("Access denied!")
            return
        return func(*args, **kwargs)
    return wrapper

def is_admin():
    # 检查用户是否为管理员
    return True

@admin_required
def sensitive_action():
    print("Performing a sensitive action...")

sensitive_action()

总结

Python 装饰器是一种强大的特性,它可以帮助我们在不修改函数代码的情况下,给函数添加额外的功能。通过理解装饰器的基本概念和应用场景,我们可以更好地利用这个特性来提高代码的可维护性和可扩展性。

更多关于 Python 装饰器的信息

[center]Python Decorator