python - python 中真的存在联合类型吗?

标签 python types unions dynamic-typing

既然Python是动态类型的,我们当然可以这样做:

def f(x):
    return 2 if x else "s"

但这就是 python 真正的用途吗?或者换句话说,联合类型是否像 Racket 中那样存在?或者我们只像这样使用它们:

def f(x):
    if x:
        return "s"

我们唯一需要的“联合”是 None 吗?

最佳答案

仅当您拥有静态类型语言时才需要联合类型,因为您需要声明一个对象可以返回多种类型之一(在您的情况下是 intstr,或在其他示例中 strNoneType)。

Python 仅处理对象,因此根本不需要考虑“联合类型”。 Python 函数返回它们返回的内容,如果程序员想要为不同的结果返回不同的类型,那么这就是他们的选择。这种选择就是一种架构选择,对 Python 解释器没有任何影响(因此这里没有什么可以“基准测试”)。

Python 3.5 确实引入了创建可选类型提示的标准,该标准包括 Union[...]Optional[...]注释。类型提示在运行时之外添加了可选的静态类型检查,就像 TypeScript 中的类型不属于 JavaScript 运行时一样。

关于python - python 中真的存在联合类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52840651/

相关文章:

python - Keras model.fit UnboundLocalError

java - 令人困惑的代码,编译正常。这段代码是如何工作的?

Pandas :将对象转换为 str

hive 查询特定联合类型的记录

c++ - C2621 : illegal union member. (C++)

python - 使用并行 python 并行化 networkx 中节点的循环

python - Numpy数组切片转置内部数据

sql-server - SQL server 2005中 "select 123.866"的数据类型是什么?

c++ - 你可以在类声明中拥有而在 union 声明中永远不会遇到的一件事是什么?

python - 连续循环登录