我知道Python主要比fortran和c / c ++等语言慢,因为它是解释而不是编译。
我还读到的另一个原因是它很慢,因为它是动态类型的,即你不必声明变量类型,它会自动执行。这非常好,因为它使代码看起来更清晰,你基本上不必过多担心变量类型。
我知道没有很好的理由这样做,因为你可以包装例如。使用Python的fortran代码,但有可能手动覆盖Python的动态类型本质并手动声明所有变量类型,从而提高Python的速度吗?
答案 0 :(得分:2)
如果我将您的问题解释为 “是否存在Python的静态类型模式?” ,那么Cython可能最接近于提供该功能。
Cython是Python语法的超集 - 几乎任何有效的Python代码也是有效的Cython代码。 Cython编译器将准Python源代码转换为非人眼C,然后可以将其编译为共享对象并作为Python模块加载。
您基本上可以使用Python代码并添加任意数量的静态类型声明。无论何种类型未声明,Cython都会添加必要的样板来正确推断它们,但代价是运行时性能更差。这实际上允许您在完全动态类型的Python代码和完全静态类型的C代码之间选择连续体中的一个点,具体取决于您需要多少运行时性能以及您准备花费多少时间进行优化。它还允许您直接调用C函数,使其成为为外部库编写Python绑定的一种非常方便的方法。
为了更好地了解其在实践中的运作方式,请查看official tutorial。
答案 1 :(得分:1)