需要mypy中某个类型的列表

Require a list of a certain type in 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)

mypy 不会对此抱怨,尽管这显然是错误的,因为 lst 是一个通用列表,包含一个与 .lower() 不兼容的整数。我可以在 iter_lower 的参数列表中使用一些提示来导致 mypy 拒绝这种用法吗?

问题是 List 类型提示。如果没有类型参数,这将被解释为 List[Any],禁用您想要的检查。 (Any 基本上是 "don't check me" 类型。)

如果你想让mypy把lst当作"list of arbitrarily mixed types, with type checking",你应该使用List[object].