类型注释:元组类型与联合类型
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]
。
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]
。