スライスオブジェクト (slice object)¶
-
PyTypeObject PySlice_Type¶
- 次に属します: Stable ABI.
スライスオブジェクトの型オブジェクトです。これは、Pythonレイヤにおける
sliceと同じオブジェクトです。
-
PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
指定された値を持つ新しいスライスオブジェクトを返します。 引数
start、stop、stepは、スライスオブジェクトの同名の属性の値として使われます。 いずれの値もNULLで構いません。 その場合、対応する属性にはNoneが使われます。新しいオブジェクトを割り当てられなかった場合は、例外を設定して
NULLを返します。
-
int PySlice_GetIndices(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)¶
- 次に属します: Stable ABI.
スライスオブジェクト slice における start, stop, および step のインデクス値を取得します。このときシーケンスの長さを length と仮定します。length よりも大きなインデクスになるとエラーとして扱います。
成功した場合は
0を返します。 エラーの場合は例外を設定せずに-1を返します。 ただし、いずれかのインデックスがNoneではなく、整数に変換できなかった場合は、例外を設定して-1を返します。おそらく、あなたはこの関数を使いたくないでしょう。
バージョン 3.2 で変更: 以前は、slice 引数の型は
PySliceObject*でした。
-
int PySlice_GetIndicesEx(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)¶
- 次に属します: Stable ABI.
PySlice_GetIndices()の実用的な代替です。 長さlengthのシーケンスを仮定し、スライスオブジェクトsliceから start、stop、step のインデックスを取得して、スライスの長さをslicelengthに格納します。 範囲外のインデックスは、通常のスライスの処理と同じ方法で範囲内に収めます。lengthは負であってはいけません。成功した場合は
0を返し、エラーの場合は例外を設定して-1を返します。注釈
この関数は、サイズを変更できるシーケンスに対して安全ではないとされています。
PySlice_Unpack()とPySlice_AdjustIndices()の組み合わせに置き換えてください。 次の呼び出しを、if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) { // エラーを返す }
次のように置き換えます。
if (PySlice_Unpack(slice, &start, &stop, &step) < 0) { // エラーを返す } slicelength = PySlice_AdjustIndices(length, &start, &stop, step);
バージョン 3.2 で変更: 以前は、slice 引数の型は
PySliceObject*でした。バージョン 3.6.1 で変更:
Py_LIMITED_APIが設定されていない場合、または0x03050400以上0x03060000未満か0x03060100以上に設定されている場合、PySlice_GetIndicesEx()はPySlice_Unpack()とPySlice_AdjustIndices()を使うマクロとして実装されています。 引数start、stop、stepは複数回評価されます。バージョン 3.6.1 で非推奨:
Py_LIMITED_APIが0x03050400未満、または0x03060000以上0x03060100未満に設定されている場合、PySlice_GetIndicesEx()は非推奨の関数です。
-
int PySlice_Unpack(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)¶
- 次に属します: Stable ABI (バージョン 3.7 より).
スライスオブジェクトの start、stop、step データメンバを C の整数として取り出します。
PY_SSIZE_T_MAXを超える値はPY_SSIZE_T_MAXに切り下げます。PY_SSIZE_T_MINより小さい start と stop はPY_SSIZE_T_MINに切り上げ、-PY_SSIZE_T_MAXより小さい step は-PY_SSIZE_T_MAXに切り上げます。 これらの調整によってエラーにはなりません。エラーの場合は例外を設定して
-1を返し、成功した場合は0を返します。Added in version 3.6.1.
-
Py_ssize_t PySlice_AdjustIndices(Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)¶
- 次に属します: Stable ABI (バージョン 3.7 より).
指定された長さのシーケンスを仮定し、スライスの開始と終了のインデックスを調整します。 範囲外のインデックスは、通常のスライスの処理と同じ方法で範囲内に収めます。
lengthは負であってはいけません。stepはゼロでも-PY_SSIZE_T_MAX未満でもいけません。PySlice_Unpack()の結果はこれらのstepの条件を満たします。スライスの長さを返します。 常に成功し、Python コードを呼び出しません。
Added in version 3.6.1.
Ellipsis オブジェクト¶
-
PyTypeObject PyEllipsis_Type¶
- 次に属します: Stable ABI.
Python の
Ellipsisオブジェクトの型です。 Python レベルのtypes.EllipsisTypeと同じです。
-
PyObject *Py_Ellipsis¶
Python の
Ellipsisオブジェクト。このオブジェクトにはメソッドがありません。Py_Noneと同様、これは immortal でシングルトンなオブジェクトです。バージョン 3.12 で変更:
Py_Ellipsisは immortal です。