现在可以在Python 3.5版本中使用类型提示。在规范(PEP 484)中,目标(和非目标)明确地暴露出来:
理由和目标
此PEP旨在为类型注释提供标准语法,打开Python代码以更容易进行静态分析和重构,潜在的运行时类型检查,以及(可能在某些情况下)利用类型信息生成代码。 [...]
在这些目标中,静态分析是最重要的。
非目标
使用效果优化的类型提示留给读者练习。
另一方面,Cython已经使用了很长时间的静态语法来提高性能。通常,人们用Cython语法重写一些代码,编译它们,然后将它们作为独立模块导回。在大型代码库上完成所有这些工作是一项痛苦的工作。但最糟糕的是,即使您正确地遵循了上述所有步骤,您也无法保证您将获得真正的改进(因为如果您使用某些模块可能会导致兼容性问题)。
编写一个工具是一项艰巨的任务,使用这种新类型的提示分散在代码中的东西自动将它们转换为Cython语法,并可能完成其余的工作job(将它们编译成模块并将它们全部导回)?因此,可以在所有代码库中共享相同的语言语法。
理论上,有可能编写一个这样的工具,但我不确定是否值得(就编写复杂性和实际收益而言)。
感谢。
答案 0 :(得分:6)
其他人只是询问了484和Cython,PEP-484 Type Annotations with own types,并且我在几个月前回复了一个关于484和numpy的帖子。
我怀疑这个主题对Stackoverflow的适用性。这是一个研究课题,而不是“如何解决这个编码问题”的问题。
基于有限的阅读,484中的类型提示是初步的,任何使用仅限于484位作者开发的代码检查器。 Py3已经有很长一段时间的注释,但我看到很少有包含它们的代码示例。当然不在我关注的numpy
代码中。
另一点是,cython
和numpy
(和numba
)与Py2一起使用,如果不是更多,则与Py3一样多。因此,这些用户通常会忽略Py 3.5中最新的铃声。 @
运算符是numpy
用户重视的唯一最近添加。
欢迎您回复,但我可以提出这个问题,因为它是重复或非主题的。
正在https://github.com/python/typing
开发typing
模块
mypy
是基于484的类型检查器,https://github.com/python/mypy(有趣的是,~/mypy
是我放置所有SO测试脚本的目录。)
这就是前沿Python类型检查工作正在进行的地方,而不是在这里。