由于Python是动态类型的,我们当然可以这样做:
def f(x):
return 2 if x else "s"
但这是 python 真正的用途吗?或者换句话说,联合类型是否像 Racket 中那样存在?或者我们只像这样使用它们:
def f(x):
if x:
return "s"
我们唯一需要的“联盟”是 None 吗?
仅当您拥有静态类型语言时才需要联合类型,因为您需要声明一个对象可以返回多种类型之一(在您的情况下是一个int
or str
,或者在另一个例子中str
or NoneType
).
Python 涉及objects只是,所以根本不需要考虑“联合类型”。 Python 函数返回它们返回的内容,如果程序员想要为不同的结果返回不同的类型,那么这就是他们的选择。这种选择就是一种架构选择,对 Python 解释器没有任何影响(因此这里没有什么可以“基准测试”)。
Python 3.5 确实引入了创建可选类型的标准hints,该标准包括Union[...] https://docs.python.org/3/library/typing.html#typing.Union and Optional[...] https://docs.python.org/3/library/typing.html#typing.Optional注释。类型提示在运行时之外添加了可选的静态类型检查,就像 TypeScript 中的类型不属于 JavaScript 运行时一样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)