让我们考虑这样一个函数:
def f(*args, **kwargs):
...
*args
是数量可变的参数,必须:
(一个物体,一个浮点数,一个浮点数),可能重复N次,
后跟0到N'个对象
例如,这是一个有效的调用:
f(my_obj, 0, 1, other_obj, 2, 3, obj3, obj4)
但这是无效的:
f(my_obj, other_obj, 2, 3)
此函数通过Python shell向用户公开。
所以,检查用户输入是有价值的——我正在使用
使用类型注释的typeguard
库
(像mypy)
我正在尝试使用typing
模块来编写正确的注释。。。
我想我至少可以表达3个参数组的约束
像这样:
@typeguard.typechecked
f(*args:Tuple[Any,float,float])
但它不起作用。 无论如何,我不知道如何在下面的对象上添加约束
当然,我可以自己编写一些代码来检查参数,但我确信对于复杂变量参数序列的情况,存在更好的方法(或者巧妙地使用typing
模块,或者另一个Python库?)
我所说的验证是指:
你想说什么就说什么
相关问题 更多 >
编程相关推荐