gpt4 book ai didi

python - 如何使用函数装饰器检查函数类型?

转载 作者:太空宇宙 更新时间:2023-11-04 11:15:00 26 4
gpt4 key购买 nike

如何使用函数装饰器来检查另一个函数的参数?我正试图全神贯注于函数装饰器,但它非常令人困惑。

理想情况下,我希望它像这样工作,你在下面传入一个 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

任何建议或指导都将不胜感激,我真的一直在努力了解装饰器。

最佳答案

check(int) 仍然需要返回一个函数。

def check(typ):
def checker(f):
def checked_func(arg):
if isinstance(arg, typ):
return f(arg)
else:
raise TypeError
return checked_func
return checker

现在,_check 返回的实际装饰器,_ 获取原始函数并将其包装在另一个 检查参数类型的函数,或者返回应用于参数的原始函数的结果,或者引发 TypeError。

如果我们把它分成更多的部分,可能会更容易理解。

int_checker = check(int)

@int_checker
def printer(arg):
print(arg)

关于python - 如何使用函数装饰器检查函数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57223537/

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