注意事项

由于 Cython 混合了 C 和 Python 语义,因此某些内容可能有点令人惊讶或不直观。我们一直在努力使 Cython 对 Python 用户更加自然,因此此列表将来可能会发生变化。

  • 给定两个类型为 int 的变量 aba % b 的符号与第二个参数的符号相同(遵循 Python 语义),而不是与第一个参数的符号相同(如 C 中)。可以通过启用 cdivision 指令来获得 C 行为,并获得一定的速度提升(Cython 0.12 之前的版本始终遵循 C 语义)。

  • 使用无符号类型时需要小心。 cdef unsigned n = 10; print(range(-n, n)) 将打印一个空列表,因为 -n 在传递给 range 函数之前会绕回到一个很大的正整数。

  • Python 的 float 类型实际上包装了 C double 值,而 Python 2.x 中的 int 类型包装了 C long 值。