Python装饰器:理解与使用问题实例
装饰器是 Python 中一种强大的语言特性,用于修改或增强函数的功能。这里我们通过几个实际的例子来理解和使用装饰器。
例子1:日志记录装饰器
def log_decorator(func):
def wrapper(*args, **kwargs):
print(f"Calling function: {func.__name__}")
result = func(*args, **kwargs))
print(f"Return value from function: {result}")
return result
return wrapper
@log_decorator
def add(a, b):
return a + b
print(add(3, 5)))
在这个例子中,log_decorator
是一个装饰器,它接受一个函数 func
作为参数,并返回一个新的函数 wrapper
。在调用原始函数时,会先执行装饰器的代码。
例子2:权限检查装饰器
def permission_required(permission):
def decorator(func):
def wrapper(*args, **kwargs):
if not args[0].has_permission(permission):
raise Exception("Permission denied!")
return func(*args, **kwargs))
return wrapper
return decorator
@permission_required('admin')
def secret_info(user):
print(f"Secret information for {user.username}: Secure message!")
user = User(username="test_user", permissions={'read': True}})
secret_info(user)
在这个例子中,我们定义了一个 permission_required
装饰器,它接受一个权限名作为参数。在调用函数时,会检查传入的用户对象是否具有指定的权限。
以上就是通过实际的例子来理解并使用Python装饰器的主要方式。
还没有评论,来说两句吧...