【发布时间】:2018-08-08 17:40:10
【问题描述】:
最近 Python 3.6 添加了静态类型作为强制某些类型的一种方式。我曾经从 Cython 获得相同的功能,与普通 Python 相比,获得了高度优化的功能。
那么我的问题是:在使用新的 Python 静态类型时,我们是否也会获得显着的性能提升?每种方法的优缺点?
【问题讨论】:
标签: python cython static-typing
最近 Python 3.6 添加了静态类型作为强制某些类型的一种方式。我曾经从 Cython 获得相同的功能,与普通 Python 相比,获得了高度优化的功能。
那么我的问题是:在使用新的 Python 静态类型时,我们是否也会获得显着的性能提升?每种方法的优缺点?
【问题讨论】:
标签: python cython static-typing
Python 中的静态类型不会使其成为一种已编译的编程语言。因此,在性能方面,您应该始终从 Cython 获得更好的性能(编译应该总是优于解释)。
Python 新添加的静态类型的主要目的是以无缝的方式执行类型检查,在此过程中牺牲了一些 Python 的哲学。
简而言之:Cython 用于速度,Python3.6 用于解释/更 Python 的方法。
【讨论】:
在任何现有的 CPython 3.7 或更早版本中都没有静态类型。
CPython 3.6(也向后移植到 3.5)中对可选类型注释的支持有助于静态代码分析器等外部工具验证程序中使用的类型是否一致。
类型提示对字节码编译或执行没有影响。
与静态类型语言中的变量声明相比,注解语法的目标是通过抽象语法树和注解提供一种简单的方法来为第三方工具和库指定结构化类型元数据属性。
请注意,在 Cython 中可以使用类型提示语法来定义 C 类型 (Type Declaration Syntax)。
【讨论】: