在Python中,函数装饰器再次成为一等公民的函数,它创造了灵活分配和传递的期望。在下面的例子中
def auth_token_not_expired(function):
@auth_token_right
def wrapper(req):
# Some validations
return function(req)
return wrapper
现在我尝试将此装饰器函数指定给另一个变量as alias
login_required = auth_token_not_expired
检查分配成功后,但是当我使用@login_required
语法调用它时,会导致NameError
Exception Type: NameError
Exception Value:
name 'login_required' is not defined
我们如何将此login_required
变量注册为装饰器?
答案 0 :(得分:2)
你的范围不对。
调整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>
现在做作业:
mi = makeitalic
@mi
def helloit():
return "hello world"
helloit() ## returns <i>hello world</i>