python3 中的静态类型:列表与列表

Static typing in python3: list vs List

在 python3 中定义函数的参数时,使用 list 和 List 有什么区别?例如

有什么区别
def do_something(vars: list):

def do_something(vars: List):

documentation 说:

class typing.List(list, MutableSequence[T])

Generic version of list. Useful for annotating return types.

但我不完全确定上面的意思。

我有类似的问题:dict 与 Dict、set 与 Set 等

从打字的角度来看,并非所有列表都相同。节目

def f(some_list: list):
    return [i+2 for i in some_list]

f(['a', 'b', 'c'])

不会使静态类型检查器失败,即使它不会 运行。相比之下,您可以使用 typing

中的抽象类型指定列表的内容
def f(some_list: List[int]) -> List[int]:
    return [i+2 for i in some_list]

f(['a', 'b', 'c'])

会失败,这是应该的。