注意注释和打字。484 中讨论的想法是全新的,并在typing
模块中实现。该模块仅在 Python3.5 中可用(最新typing
的也可pip
用于 Py2 和 Py3)。
https://docs.python.org/3/library/typing.html
您引用的注释来自 484 中的一个部分,开头是:
要向 Python 3.5 以及旧版本开放静态类型检查的使用,需要统一的命名空间。为此,在标准库中引入了一个名为 typing 的新模块。
注释列出的东西是注释类型,而不是实际的对象类(内置或 from collections
)。不要混淆两者。
请注意Dict
,List
,Set
和FrozenSet
都是大写的,其中函数(和类型名称)是dict
, list
, set
, frozenset
。换句话说,要使用dict()
or {}
, not来制作字典Dict
。
注释是 3.0 的新内容(根本不是 2.n)。在常规解释器中,他们所做的只是填充函数的__annotations__
字典。解释器中没有使用或需要注释的内容。
http://mypy-lang.org/ 将自己描述为一个实验性的打字检查器。您需要查看它的文档以了解它与 484 等的兼容性。
https://docs.python.org/3/library/collections.abc.html#module-collections.abctyping
有一些我相信使用的 抽象定义。我从来没有用过这些。它们主要面向开发新对象类别的人,而不是“常规”用户。
这个问题的typing
标签可能不是一个好主意。它的追随者不多,而且过于笼统。它没有引用这个 Python 模块。
搜索[python] 484
处理这种注释风格的其他 SO 问题。
https://github.com/python/typing -typing
开发存储库。
在这个存储库FrozenSet
中,文件中有一个定义python2/typing.py
(python2 backport),但在src/typing.py
. 我不确定这有什么意义。