繁体   English   中英

类型提示中的可选联合

[英]Optional Union in type hint

在类型提示系统中, Optional[T]相当于Union[T, None]

这适用于多个类型参数吗? IE,

Optional[T,U]突破到Union[T,U,None] ,或者我是否需要将其写为Optional[Union[T,U]]

您可能会将typing库视为有关如何声明某些类型的规范。 如果该规范中未定义某些内容,那么最好将其假设为未定义的行为。

然而,在 python 和类型的特殊情况下,我们有一种引用静态类型检查器,它是mypy 因此,为了获得您问题的答案,或者只是以编程方式检查类型,我们可能会使用它并查看它是否显示任何警告。

下面是一个例子:

$ cat check_optional.py 
import typing
def fn(x: typing.Optional[int, str]):
    pass
$ mypy check_optional.py 
check_optional.py:3: error: Optional[...] must have exactly one type argument

所以不, Optional[T, U]就 mypy 而言是不可能的,即使在typing库中声明它没有问题。

除了从“函数式编程”的角度来看, OptionalUnion是两个不同但众所周知且定义明确的monad 两个 monad 的组合( Optional[T, U, None] )是另一个 monad,但是它的行为与Optional不同,因此不应如此命名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM