T = TypeVar("T", bound=Union[str, int])
def connect_lists(list_1: list[T], list_2: list[T]) -> list[T]:
out: list[T] = []
out.extend(list_1)
out.extend(list_2)
return out
connect_lists([1, 2], ["a", "b"])
我的:
错误:无法推断“connect_lists”的类型参数 1 [杂项]
T = TypeVar("T", bound=Union[str, int])
def connect_lists(list_1: Iterable[T], list_2: Iterable[T]) -> list[T]:
out: list[T] = []
out.extend(list_1)
out.extend(list_2)
return out
connect_lists([1, 2], ["a", "b"])
现在 mypy 不会引发错误。
在这种情况下,List 和 Iterable 有什么区别?
这是因为列表的保存方式不同,并且无法使用类型提示将两种类型存储在同一类型中,但另一方面,可迭代则更加灵活。