def func(df_a: pd.DataFrame, df_b: pd.DataFrame) -> (pd.DataFrame, pd.DataFrame):
Pylance 建议使用两种解决方案来修改这条线。如果有任何显着差异,每种方法的优缺点是什么?
类型注释中不允许元组表达式
使用 Tuple[T1, ..., Tn] 表示元组类型或使用 Union[T1, T2] 表示联合类型
def func(df_a: pd.DataFrame, df_b: pd.DataFrame) -> (pd.DataFrame, pd.DataFrame):
Pylance 建议使用两种解决方案来修改这条线。如果有任何显着差异,每种方法的优缺点是什么?
类型注释中不允许元组表达式
使用 Tuple[T1, ..., Tn] 表示元组类型或使用 Union[T1, T2] 表示联合类型
它们的含义不同:
Tuple[A, B, C]
意味着您的函数返回具有 ABC 数据类型的三元素元组:def f() -> Tuple[str, int, float]:
return 'hello', 1, 3.33
Union[A, B]
意味着您的函数返回 A 或 B 数据类型的对象:import random
def f() -> Union[str, int]:
if random.random() > 0.5:
return 'hello'
else:
return 10
在您的情况下,您似乎想要使用Tuple[pd.DataFrame, pd.DataFrame]
.
联合类型在这里没有意义,因为类型是相同的。
如果您想指示正在返回一个元组,您可以Tuple[pd.DataFrame, pd.DataFrame]
在较旧版本的 Python 或tuple[pd.DataFrame, pd.DataFrame]
较新版本的 Python 中使用。请参阅此处了解更多信息。