python 3.5类型提示:我可以检查函数参数是否匹配类型提示吗?

python 3.5类型提示:我可以检查函数参数是否匹配类型提示吗?,第1张

python 3.5类型提示:我可以检查函数参数是否匹配类型提示吗?

Python本身不提供此类功能,您可以在此处了解更多信息:


我为此写了一个装饰器。这是我的装饰器的代码:

from typing import get_type_hintsdef strict_types(function):    def type_checker(*args, **kwargs):        hints = get_type_hints(function)        all_args = kwargs.copy()        all_args.update(dict(zip(function.__pre__.co_varnames, args)))        for argument, argument_type in ((i, type(j)) for i, j in all_args.items()): if argument in hints:     if not issubclass(argument_type, hints[argument]):         raise TypeError('Type of {} is {} and not {}'.format(argument, argument_type, hints[argument]))        result = function(*args, **kwargs)        if 'return' in hints: if type(result) != hints['return']:     raise TypeError('Type of result is {} and not {}'.format(type(result), hints['return']))        return result    return type_checker

您可以这样使用它:

@strict_typesdef repeat_str(mystr: str, times: int):    return mystr * times

虽然将您的函数限制为仅接受一种类型不是很pythonic。虽然您可以使用abc(

number
或自定义abc)之类的abc(抽象基类)作为类型提示,并限制您的函数不仅接受一种类型,还可以接受所需类型的任意组合。


如果有人要使用它,请添加一个github存储库。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5661669.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存