【问题标题】:Static typing in python3: list vs List [duplicate]python3中的静态类型:列表与列表[重复]
【发布时间】:2019-03-08 19:34:19
【问题描述】:

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

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

def do_something(vars: List):

documentation 说:

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

列表的通用版本。用于注释返回类型。

但我不完全确定以上是什么意思。

我有类似的问题:dict vs Dict,set vs Set,等等。

【问题讨论】:

标签: python python-3.x list static-typing


【解决方案1】:

从打字的角度来看,并非所有列表都是相同的。程序

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'])

应该会失败。

【讨论】:

  • 注意:PEP 585 在 Python 3.9 中改变了这一点。小写 list[int] 现在可以使用了。
  • @ScottJ 那么 list 和 List 现在完全一样了吗?
  • @SearchSpace 我不确定,但似乎不再需要大写列表?
猜你喜欢
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 2015-08-28
  • 2018-06-07
  • 2019-09-09
  • 2017-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多