既然Python是动态类型的,我们当然可以这样做:
def f(x):
return 2 if x else "s"
但这就是 python 真正的用途吗?或者换句话说,联合类型是否像 Racket 中那样存在?或者我们只像这样使用它们:
def f(x):
if x:
return "s"
我们唯一需要的“联合”是 None 吗?
最佳答案
仅当您拥有静态类型语言时才需要联合类型,因为您需要声明一个对象可以返回多种类型之一(在您的情况下是 int
或 str
,或在其他示例中 str
或 NoneType
)。
Python 仅处理对象,因此根本不需要考虑“联合类型”。 Python 函数返回它们返回的内容,如果程序员想要为不同的结果返回不同的类型,那么这就是他们的选择。这种选择就是一种架构选择,对 Python 解释器没有任何影响(因此这里没有什么可以“基准测试”)。
Python 3.5 确实引入了创建可选类型提示的标准,该标准包括 Union[...]
和 Optional[...]
注释。类型提示在运行时之外添加了可选的静态类型检查,就像 TypeScript 中的类型不属于 JavaScript 运行时一样。
关于python - python 中真的存在联合类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52840651/