Python装饰器:理解与使用问题实例

原创 浅浅的花香味﹌ 2024-12-21 21:15 78阅读 0赞

装饰器是 Python 中一种强大的语言特性,用于修改或增强函数的功能。这里我们通过几个实际的例子来理解和使用装饰器。

例子1:日志记录装饰器

  1. def log_decorator(func):
  2. def wrapper(*args, **kwargs):
  3. print(f"Calling function: {func.__name__}")
  4. result = func(*args, **kwargs))
  5. print(f"Return value from function: {result}")
  6. return result
  7. return wrapper
  8. @log_decorator
  9. def add(a, b):
  10. return a + b
  11. print(add(3, 5)))

在这个例子中,log_decorator 是一个装饰器,它接受一个函数 func 作为参数,并返回一个新的函数 wrapper。在调用原始函数时,会先执行装饰器的代码。

例子2:权限检查装饰器

  1. def permission_required(permission):
  2. def decorator(func):
  3. def wrapper(*args, **kwargs):
  4. if not args[0].has_permission(permission):
  5. raise Exception("Permission denied!")
  6. return func(*args, **kwargs))
  7. return wrapper
  8. return decorator
  9. @permission_required('admin')
  10. def secret_info(user):
  11. print(f"Secret information for {user.username}: Secure message!")
  12. user = User(username="test_user", permissions={'read': True}})
  13. secret_info(user)

在这个例子中,我们定义了一个 permission_required 装饰器,它接受一个权限名作为参数。在调用函数时,会检查传入的用户对象是否具有指定的权限。

以上就是通过实际的例子来理解并使用Python装饰器的主要方式。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,78人围观)

还没有评论,来说两句吧...

相关阅读