スライスオブジェクト—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/c-api/slice
移動先:案内検索

スライスオブジェクト

PyTypeObject PySlice_Type
スライスオブジェクトの型オブジェクト。 これは、Pythonレイヤーのスライスと同じです。
int PySlice_Check(PyObject *ob)
ob がスライスオブジェクトの場合はtrueを返します。 obNULLであってはなりません。
PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
指定された値を持つ新しいスライスオブジェクトを返します。 startstop 、および 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)

長さ長さのシーケンスを想定して、スライスオブジェクトスライスから開始、停止、およびステップのインデックスを取得します。 length より大きいインデックスをエラーとして扱います。

成功した場合は0を返し、例外を設定せずにエラーの場合は-1を返します(インデックスの1つが None でなく、整数への変換に失敗した場合を除きます。この場合、[ X179X] は例外セットとともに返されます)。

この関数はおそらく使いたくないでしょう。

バージョン3.2で変更: スライスパラメーターのパラメータータイプは以前は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)

PySlice_GetIndices()の使用可能な代替品。 長さ長さのシーケンスを想定してスライスオブジェクトスライスから開始、停止、およびステップインデックスを取得し、スライスの長さをスライス長に格納します。 範囲外のインデックスは、通常のスライスの処理と一致する方法でクリップされます。

成功した場合は0を返し、例外が設定されたエラーの場合は-1を返します。

ノート

この関数は、サイズ変更可能なシーケンスに対して安全ではないと見なされます。 その呼び出しは、 PySlice_Unpack()PySlice_AdjustIndices()の組み合わせに置き換える必要があります。

if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) {
    // return error
}

に置き換えられます

if (PySlice_Unpack(slice, &start, &stop, &step) < 0) {
    // return error
}
slicelength = PySlice_AdjustIndices(length, &start, &stop, step);

バージョン3.2で変更: スライスパラメーターのパラメータータイプは以前はPySliceObject*でした。

バージョン3.6.1で変更: Py_LIMITED_APIが設定されていないか、0x030504000x03060000(含まない)または0x03060100以上!PySlice_GetIndicesEx は、!PySlice_Unpack および!PySlice_AdjustIndices を使用してマクロとして実装されます。 引数 startstop 、および step は複数回評価されます。

バージョン3.6.1以降非推奨: Py_LIMITED_API0x03050400未満、または0x030600000x03060100の間の値に設定されている場合(含む)!PySlice_GetIndicesEx は非推奨の関数です。

int PySlice_Unpack(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)

スライスオブジェクトから開始、停止、およびステップのデータメンバーをC整数として抽出します。 PY_SSIZE_T_MAXより大きい値をPY_SSIZE_T_MAXにサイレントに減らし、PY_SSIZE_T_MIN未満の開始値と停止値をPY_SSIZE_T_MINにサイレントにブーストし、ステップ値を以下にサイレントにブーストします。 -PY_SSIZE_T_MAXから-PY_SSIZE_T_MAX

エラーの場合は-1を返し、成功の場合は0を返します。

バージョン3.6.1の新機能。

Py_ssize_t PySlice_AdjustIndices(Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)

指定された長さのシーケンスを想定して、開始/終了スライスインデックスを調整します。 範囲外のインデックスは、通常のスライスの処理と一致する方法でクリップされます。

スライスの長さを返します。 常に成功します。 Pythonコードを呼び出さない。

バージョン3.6.1の新機能。


省略記号オブジェクト

PyObject *Py_Ellipsis
Python Ellipsisオブジェクト。 このオブジェクトにはメソッドがありません。 参照カウントに関しては、他のオブジェクトと同じように扱う必要があります。 Py_None と同様に、シングルトンオブジェクトです。