类型注释:元组类型与联合类型

Type annotations: tuple type vs union type

def func(df_a: pd.DataFrame, df_b: pd.DataFrame) -> (pd.DataFrame, pd.DataFrame):

Pylance 建议用两个建议的解决方案修改此行。如果有显着差异,每一种的优缺点是什么?

Tuple expression not allowed in type annotation

Use Tuple[T1, ..., Tn] to indicate a tuple type or Union[T1, T2] to indicate a union type

联合类型在这里没有意义,因为类型相同。

如果你想表明正在返回一个元组,你可以在旧版本的 Python 中使用 Tuple[pd.DataFrame, pd.DataFrame],或者在新版本的 Python 中使用 tuple[pd.DataFrame, pd.DataFrame] ].有关详细信息,请参阅

它们的意思不同:

  • Tuple[A, B, C] 意味着你的函数 returns 一个 three-element 数据类型为 A B C 的元组:
def f() -> Tuple[str, int, float]:
    return 'hello', 1, 3.33
  • Union[A, B] 表示您的函数 returns 是 A 或 B 数据类型的对象:
import random 

def f() -> Union[str, int]:
    if random.random() > 0.5:
        return 'hello'
    else:
        return 10

在您的情况下,您似乎想使用 Tuple[pd.DataFrame, pd.DataFrame]