【发布时间】:2019-12-05 00:07:27
【问题描述】:
如何使用函数装饰器来检查另一个函数的参数?我正试图围绕函数装饰器进行思考,但这非常令人困惑。
理想情况下,我希望它像这样工作,你在下面传入一个 int 和一个函数,该函数可以正常工作,否则你会得到一个类型错误。
@check(int)
def printer(arg):
print(arg)
>>> printer(5)
5
这是我尝试过的,但它不起作用。
def check(typ):
def validate(args):
if type(args) == typ:
return validate(args)
else:
raise TypeError
return validate
任何建议或指导都将不胜感激,我一直在努力将我的头脑围绕在装饰器上。
【问题讨论】:
-
这不是一个特定的错误,代码不正确,因为我不明白如何构造它,因为我无法理解如何从装饰器传入参数并将其与函数参数进行比较。
-
您的主要主题是获取函数类型,并在代码中检查参数类型。请清楚地问你想知道什么。作为回答,我用外行语言写了关于装饰器的文章。
标签: python python-3.x python-decorators