在Python中为函数装饰器创建别名

2024-04-26 06:50:53 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,函数decorator同样是一类公民的函数,这就产生了灵活分配和传递的期望。在下面的例子中

def auth_token_not_expired(function):
    @auth_token_right
    def wrapper(req):
        # Some validations
        return function(req)
    return wrapper

现在,我尝试将这个decorator函数赋给另一个变量alias

login_required = auth_token_not_expired

当检查赋值成功时,但是当我使用@login_required语法调用它时,它会导致NameError

^{pr2}$

我们如何将这个login_required变量也注册为decorator?在


Tags: 函数tokenauthreturndefrequirednotlogin
1条回答
网友
1楼 · 发布于 2024-04-26 06:50:53

你在错误的范围内。

改编How to make a chain of function decorators?中的示例

def makeitalic(fn):
    def wrapped():
        return "<i>" + fn() + "</i>"
    return wrapped

@makeitalic
def hello():
    return "hello world"

hello() ## returns <i>hello world</i>

现在做作业:

^{pr2}$

相关问题 更多 >