类型提示现在在 Python 3.5 版本中可用。在规范中(PEP 484 https://www.python.org/dev/peps/pep-0484/)目标(和非目标)清晰可见:
理由和目标
该 PEP 旨在为类型注释提供标准语法,开放 Python 代码以更轻松地进行静态分析和重构、潜在的运行时类型检查以及(也许在某些情况下)利用类型信息的代码生成。
[...]
在这些目标中,静态分析是最重要的。
非目标
使用类型提示性能优化留给读者作为练习。
另一方面,Cython 长期以来一直使用静态语法来提高性能。通常,人们使用 Cython 语法重写一些代码,编译它们,然后将它们作为独立模块导入回来。在大型代码库上完成所有这些工作是一项痛苦的工作。但最糟糕的是,即使您正确遵循上述所有步骤,您也不能保证您会有真正的改进(因为如果您使用某些模块,可能会导致兼容性问题)。
编写一个工具将是一项艰巨的任务使用这种新的类型提示分散在代码中的东西自动将它们翻译为 Cython 语法并可能完成其余的工作(将它们编译成模块并将它们全部导入回来)?因此,可以在所有代码库中共享相同的语言语法。
从理论上讲,可以编写这样的工具,但我不确定是否值得(就编写它的复杂性和产量的真正改进而言)。
Thanks.
其他人刚刚问了 484 和 Cython,PEP-484 具有自己类型的类型注释 https://stackoverflow.com/questions/38005633/pep-484-type-annotations-with-own-types,我用几个月前关于 484 和 numpy 的帖子进行了回应。
我怀疑这个主题是否适合 Stackoverflow。这是一个研究课题,而不是“我如何解决这个编码问题”的问题。
基于有限的阅读,484中的类型提示是初步的,任何使用仅限于484作者开发的代码检查器。 Py3 已经有注释很长时间了,但是我见过很少有包含它们的代码示例。当然不是在numpy
我在这里重点关注的代码。
还有一点是cython
and numpy
(and numba
)与 Py2 一起使用的情况与 Py3 一样多,甚至更多。因此,这些用户通常会忽略 Py 3.5 中的最新功能。这@
运算符是最近添加的唯一一个numpy
用户价值。
欢迎您做出回应,但我可能会因为该问题重复或偏离主题而提名该问题结束。
The typing
模块正在开发中https://github.com/python/typing https://github.com/python/typing
mypy
是基于484的类型检查器,https://github.com/python/mypy https://github.com/python/mypy(有趣的,~/mypy
是我放置所有 SO 测试脚本的目录。)
这就是最先进的 Python 类型检查工作进行的地方,而不是这里。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)