注意事項

Cython は C と Python のセマンティクスを混合しているので、戸惑ったり直 感的でなかったりすることがあるでしょう。我々は、常に Python ユーザが Cython をより自然に扱えるように工夫しているので、ここに挙げた内容は将 来変更されることがあります。

  • 10**-2 == 0 です。 Python のように 0.01 にはなりません。
  • 二つの int の変数 ab があるとき、, a % b の結果 の符号は、2つ目の引数の符号と同じになります (Python のセマンティク スに従います)。最初の引数の符号 (Cのセマンティクス) ではありません。 C と同じ挙動を実現するには division ディレクティブを使います。 division ディレクティブを使うと、少し速度が向上します。 (バージョン 0.12 以前の Cython では、常に C のセマンティクスを使い ます。)
  • unsigned 型を使うときには注意が必要です。例えば、 cdef unsigned n = 10; print(range(-n, n)) を実行すると空のリス トを返すことがあります。これは、 -n をラップした結果が巨大な正 の整数になって range 関数に渡るためです。
  • Python の float 型は、実際は C の double の値をラップしてい ます。同様に、 Python の int は C の long 型のラップです。

Previous topic

pxd ファイル

Next topic

プロファイリング

This Page