Python 需要mypy中特定类型的列表

Python 需要mypy中特定类型的列表,python,typing,mypy,Python,Typing,Mypy,假设我有一个只能获取字符串列表的函数,如下所示: from typing import List def iter_lower(lst: List[str]) -> List[str]: new_lst = [] for string in lst: new_lst.append(string.lower()) return new_lst lst: List = ["Hello", "World", 1] iter_lower(lst) m

假设我有一个只能获取字符串列表的函数,如下所示:

from typing import List


def iter_lower(lst: List[str]) -> List[str]:
    new_lst = []
    for string in lst:
        new_lst.append(string.lower())
    return new_lst

lst: List = ["Hello", "World", 1]
iter_lower(lst)

mypy
没有对此抱怨,尽管这显然是错误的,因为
lst
是一个通用列表,包含一个与
.lower()
不兼容的整数。在
iter\u lower
的参数列表中是否有一些提示可以使用,从而导致
mypy
拒绝此用法?

问题在于
列表
类型提示。如果没有类型参数,这将被解释为
List[Any]
,禁用所需的检查。(
Any
基本上是“不检查我”类型。)


如果希望mypy将
lst
视为“任意混合类型的列表,带有类型检查”,则应使用
list[object]

如果希望进行类型检查,则不应将
list
用作类型提示。您专门禁用了所需的检查。是否有方法表示,例如,列表中的项目是每种类型的并集?。例如,我看到注释
List[Union[int,str]]
被正确捕获。
List[object]
。谢谢!把这个作为回答,如果你愿意,我会接受的