类型提示现在可以在Python3.5版本中使用。在规范(佩普484)中,目标(和非目标)公开得很清楚:
理由和目标 此PEP旨在为类型注释提供标准语法,为更容易的静态分析和重构打开Python代码,提供潜在的运行时类型检查,以及(在某些情况下)利用类型信息生成代码。..。 在这些目标中,静态分析是最重要的。非目标 使用类型提示进行性能优化,留作读者练习。
另一方面,Cython已经使用了很长时间的静态语法来提高性能。通常,人们用Cython语法重写一些代码,编译它们,然后将它们作为独立的模块导入。这是一项痛苦的工作,在大量的代码基础上完成所有这些工作。但最糟糕的是,即使您正确地执行了上述所有步骤,也无法保证您将有真正的改进(因为如果使用某些模块,可能会导致兼容性问题)。
编写一个使用这种新类型提示代码的工具将是一项困难的任务,会自动将它们转换为Cython语法,并可能完成剩下的工作(将它们编译成模块并将它们全部导入回)?因此,在所有代码库中共享相同的语言语法是可能的。
从理论上讲,编写这样的工具是可能的,但我不确定是否值得(就编写它的复杂性和真正的改进效果而言)。
谢谢。
发布于 2016-06-24 18:40:08
其他人刚刚询问了484和Cython,具有自己类型的PEP-484类型注释,我用几个月前的帖子回复了484和numpy。
我怀疑这个话题是否适合Stackoverflow。这是一个研究课题,而不是“我如何解决这个编码问题”的问题。
基于有限的阅读,484中的类型提示是初步的,任何使用都仅限于由484名作者开发的代码检查器。Py3已经使用注释很长时间了,但是我很少看到包含它们的代码示例。当然,我在这里所关注的numpy代码中并不是这样。
另一点是,cython和numpy (和numba)与Py2一起使用,即使不是更多,也与Py3一样多。因此,Py 3.5中最新的铃声-n-哨声通常被这些用户忽略。@运算符是numpy用户最近惟一重视的附加项。
欢迎您的答复,但我可能会提名这个问题的结束,因为它是一个重复或偏离主题。
typing模块正在https://github.com/python/typing上开发。
mypy是基于484,https://github.com/python/mypy的类型检查器(有趣,~/mypy是我放置所有SO测试脚本的目录)。
这是最先进的Python类型检查工作正在完成的地方,而不是这里。
https://stackoverflow.com/questions/38018780
复制相似问题