类型提示中的可选联合

在类型提示系统中,Optional[T]据说等价于Union[T, None]

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

确实Optional[T,U]爆发了Union[T,U,None],或者我需要把它写成Optional[Union[T,U]]


慕神8447489
浏览 185回答 1
1回答

30秒到达战场

您可能会将typing库视为有关如何声明某些类型的规范。如果该规范中未定义某些内容,那么最好将其假设为未定义的行为。然而,在 python 和类型的特殊情况下,我们有一种引用静态类型检查器,它是mypy。因此,为了获得您问题的答案,或者只是以编程方式检查类型,我们可能会使用它并查看它是否显示任何警告。下面是一个例子:$ cat check_optional.py import typingdef 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]即使在typing库中声明它没有问题,就 mypy 而言也是不可能的。除了从“函数式编程”的角度来看,Optional和Union都是两个不同但众所周知且定义明确的monad。两个 monad ( Optional[T, U, None]) 的组合是另一个 monad,但是它的行为与此不同Optional,因此不应如此命名。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python