スライスオブジェクト (slice object)¶
-
PyTypeObject
PySlice_Type
¶ スライスオブジェクトの型オブジェクトです。
slice
やtypes.SliceType
と同じです。
-
PyObject*
PySlice_New
(PyObject *start, PyObject *stop, PyObject *step)¶ - Return value: New reference.
指定した値から新たなスライスオブジェクトを返します。パラメタ start, stop, および step はスライスオブジェクトにおける同名の属性として用いられます。これらの値はいずれも NULL にでき、対応する値には
None
が使われます。新たなオブジェクトをアロケーションできない場合には NULL を返します。
-
int
PySlice_GetIndices
(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)¶ スライスオブジェクト slice における start, stop, および step のインデクス値を取得します。このときシーケンスの長さを length と仮定します。length よりも大きなインデクスになるとエラーとして扱います。
成功のときには
0
を、エラーのときには例外をセットせずに-1
を返します (ただし、指定インデクスのいずれか一つがNone
ではなく、かつ整数に変換できなかった場合を除きます。この場合、-1
を返して例外をセットします)。おそらくこの関数を使う気にはならないでしょう。バージョン 2.3 以前の Python でスライスオブジェクトを使いたいのなら、
PySlice_GetIndicesEx()
のソースを適切に名前変更して自分の拡張モジュールのソースコード内に組み込むとよいでしょう。バージョン 2.5 で変更: この関数は以前は length の型に
int
を、 start, stop, step の型にint *
を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。
-
int
PySlice_GetIndicesEx
(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)¶ PySlice_GetIndices()
の便利な代替です。 slice における、start, stop および step のインデクス値を取得をします。シーケンスの長さを length 、スライスの長さを slicelength に格納します。境界外のインデクスは通常のスライスと一貫した方法でクリップされます。成功のときには
0
を、エラーのときには例外をセットして-1
を返します。バージョン 2.3 で追加.
バージョン 2.5 で変更: この関数は以前は length の型に
int
を、 start, stop, step, slicelength の型にint *
を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。