我使用 Flask.route() 装饰器有一段时间了,想自己写一个,但它总是告诉我函数没有传入它。
我已经完全复制了 Flask 示例中的所有内容,所以我的装饰器定义肯定是错误的:
def decorator(f, *d_args):
def function(*args, **kwargs):
print('I am decorated')
return f(*args, **kwargs)
return function
@decorator()
def test(a, b=1):
print('Test', a, b)
test(1, 6)
我得到的错误:
Traceback (most recent call last):
File "C:/Users/Tobi/Desktop/decorators.py", line 49, in <module>
@decorator()
TypeError: decorator() missing 1 required positional argument: 'f'
答案 0 :(得分:1)
首先,有关于处理这个问题的SO的问题。在编写新问题之前,您应该对此错误进行更多研究。但无论如何:
您的错误的原因是因为您通过在 def
之前编写它来调用装饰器 因为您已经使用方括号 decorator()
调用它而没有传入任何内容,它会抛出一个错误。
对于你的装饰器,正确的用法是:
@decorator # no brackets here
def function()
...