Cython - 使用"来自" for循环中的关键字

时间:2016-02-14 20:28:58

标签: python cython

我最近在sklearn的BallTree课程中阅读了一些源代码,这是用Cython编写的,我在for循环中遇到了一些bizarre syntax

for j from 0 <= j < n_features:
    centroid[j] += this_pt[j]

经过一番调查后,我无法在from循环中找到有关for关键字使用的任何文档。实际上,this answer明确指出Python中from的唯一用法是import_from子句。

虽然看起来奇怪,但我对这条线的解释基本上是:

for j in range(n_features):
    ...

...符合j0开头并且仍然小于n_features的条件。这种奇怪语法的优势究竟是什么,它是否采取了与我预期不同的方式?

2 个答案:

答案 0 :(得分:4)

这是oldie that was retained for compatibility pyrex(cython前身)。

for i from 0 <= i < n:

相当于

for i in range(n):

您应该注意它已被弃用。

答案 1 :(得分:3)

这是一种传统形式。

为了向后兼容Pyrex,Cython还支持更详细的for循环形式,您可以在遗留代码中找到它:

for i from 0 <= i < n:

取自Cython docs