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