def my_function(dist: list[int], clabels: list[int]):
...
暗示
dist
中的 my_function
参数必须是整数排序列表的正确方法是什么?
如果您的目标是影响其他开发人员传递排序列表,您有几种方法可以做到这一点。
dist_asc
或 dist_desc
。typing.Annotated
将任意字符串添加到类型注释中。typing.NewType
来要求您的输入来自已知函数或由某人使用您的 NewType
手动包装,例如 from typing import NewType
DistAsc = NewType('DistAsc', list[int])
def returns_dist() -> DistAsc:
return DistAsc([1, 2, 3])
def my_function(dist: DistAsc, clabels: list[int]):
...
my_function(returns_dist(), []) # correct, no squiggles in editor
my_function([3, 2, 1], []) # correct, squiggles in editor
my_function([1, 2, 3], []) # incorrect, squiggles in editor
my_function(DistAsc([3, 2, 1]), []) # incorrect, no squiggles in editor
请注意,这种方法有多种故障模式,并且其功能假设开发人员正在使用工作静态类型检查器(情况并非总是如此)。
如果您真的需要保证列表是有序的,那么请在您的函数中自行验证顺序,如果违反了您的假设,请提出
ValueError
。
重要的是要具体说明您期望的排序顺序(升序或降序)。确保它对读者来说是显而易见的。