需要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]
.
假设我有一个只能获取字符串列表的函数,如下所示:
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]
.