mypy 无法推断类型参数。列表和可迭代的区别

问题描述 投票:0回答:1
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 有什么区别?

python mypy python-typing typing
1个回答
0
投票

这是因为列表的保存方式不同,并且无法使用类型提示将两种类型存储在同一类型中,但另一方面,可迭代则更加灵活。

© www.soinside.com 2019 - 2024. All rights reserved.