注意事项¶
由于 Cython 混合了 C 和 Python 语义,因此某些内容可能有点令人惊讶或不直观。我们一直在努力使 Cython 对 Python 用户更加自然,因此此列表将来可能会发生变化。
给定两个类型为
int
的变量a
和b
,a % b
的符号与第二个参数的符号相同(遵循 Python 语义),而不是与第一个参数的符号相同(如 C 中)。可以通过启用 cdivision 指令来获得 C 行为,并获得一定的速度提升(Cython 0.12 之前的版本始终遵循 C 语义)。使用无符号类型时需要小心。
cdef unsigned n = 10; print(range(-n, n))
将打印一个空列表,因为-n
在传递给range
函数之前会绕回到一个很大的正整数。Python 的
float
类型实际上包装了 Cdouble
值,而 Python 2.x 中的int
类型包装了 Clong
值。