gpt4 book ai didi

python - pylons 装饰器是如何工作的

转载 作者:行者123 更新时间:2023-12-01 06:18:43 24 4
gpt4 key购买 nike

from decorator import decorator
from pylons.decorators.util import get_pylons

def allowed_roles(roles):
def wrapper(func, *args, **kwargs):
session = get_pylons(args).session
# edit pylons session here.
return func(*args, **kwargs)
return decorator(wrapper)

谁能解释一下它是如何工作的吗?

最佳答案

像任何其他装饰器作品一样 -

装饰器是一个函数,它接收一个函数作为参数,并返回另一个函数。返回的函数将“取代”原始函数。

由于装饰器的预期效果通常是能够在原始函数(被装饰的函数)运行之前和之后运行一些代码,因此装饰器创建一个新函数,该函数采用任意数量的匿名和命名参数(*前缀“args”和**前缀“kwargs”分别负责将参数存储在列表和字典中)

在这个新函数中,您可以编写验证代码 - 然后它调用原始函数 - 在本上下文中称为“func”,并返回其原始值。

“decorator.decorator”调用并不是严格需要的:它只是修改了包装器函数的一些 ttrbitues,以便它看起来更接近原始函数(如“func_name”属性) - 但代码应该在没有它。

定义装饰器后,您必须将其应用到您想要装饰的函数或方法:只需将 @allowed_roles 放在您想要装饰的函数定义的前缀行中即可。

关于python - pylons 装饰器是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1807760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com