在Python中,当将一个由Optional
个值组成的序列收集到Iterable
或List
中,同时过滤出None
个值时,如何向类型判断器表示结果Iterable
的元素类型不再是Optional
,并且列表不包含None
?
举个例子:
def a(i: InputType) -> Optional[ResultType]:
...
def b(is: List[InputType]) -> Iterable[ResultType]:
return filter(partial(is_not, None), (a(x) for x in is))
类型判断器(在我的例子中是Pyright)抱怨我无法将潜在的None
值放入Iterable[ScanFileResult]
返回类型中.但是,因为我要过滤掉它,所以我需要一些方法来断言,以向类型判断器证明元素类型不再是Optional[ResultType]
,而只是ResultType
.做这件事最干净的方式是什么?