python 中有一个函数的入参有一个这样的参数:sentence_pairs: Union[List[Tuple[str, str]], Tuple[str, str]] 是啥意思 其中 Union 和 Tuple 又是啥意思
在 Python 中,Union
和 Tuple
是类型提示(type hinting)的一部分,用于帮助开发者更好地理解和使用函数的参数和返回值类型。这些类型提示是由 typing
模块提供的。
让我们逐一解释你的问题:
Union
Union
表示一个参数可以是多种类型中的一种。例如,Union[int, str]
表示参数可以是 int
类型,也可以是 str
类型。在你的例子中,Union[List[Tuple[str, str]], Tuple[str, str]]
表示参数 sentence_pairs
可以是以下两种类型之一:
List[Tuple[str, str]]
:一个包含多个元组的列表,每个元组包含两���字符串。Tuple[str, str]
:一个包含两个字符串的元组。Tuple
Tuple
表示一个固定长度和固定类型的序列。在你的例子中,Tuple[str, str]
表示一个包含两个字符串的元组。例如,("hello", "world")
就是一个符合 Tuple[str, str]
类型的元组。
假设你有一个函数 process_sentence_pairs
,其参数 sentence_pairs
的类型是 Union[List[Tuple[str, str]], Tuple[str, str]]
,那么这个函数可以接受以下两种类型的参数:
from typing import List, Tuple, Union
def process_sentence_pairs(sentence_pairs: Union[List[Tuple[str, str]], Tuple[str, str]]):
if isinstance(sentence_pairs, list):
for pair in sentence_pairs:
print(f"Processing pair: {pair}")
elif isinstance(sentence_pairs, tuple):
print(f"Processing single pair: {sentence_pairs}")
# 示例用法
sentence_pairs_list = [("hello", "world"), ("foo", "bar")]
sentence_pair_tuple = ("hello", "world")
process_sentence_pairs(sentence_pairs_list)
process_sentence_pairs(sentence_pair_tuple)
在这个例子中,process_sentence_pairs
函数可以处理一个包含多个元组的列表,也可以处理一个单独的元组。
Union
用于表示参数可以���多种类型中的一种。Tuple
用于表示一个固定长度和固定类型的序列。通过使用这些类型提示,可以使代码更加清晰和易于维护,同时也能帮助 IDE 和静态类型检查工具(如 mypy
)进行类型检查。