需要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基本上是"不要检查我"类型。(

如果您希望mypy将lst视为"任意混合类型的列表,并进行类型检查",则应该使用List[object]

最新更新