スライスオブジェクト
- PyTypeObject PySlice_Type
- スライスオブジェクトの型オブジェクト。 これは、Pythonレイヤーのスライスと同じです。
- int PySlice_Check(PyObject *ob)
- ob がスライスオブジェクトの場合はtrueを返します。 ob は
NULL
であってはなりません。
- 指定された値を持つ新しいスライスオブジェクトを返します。 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)
長さ長さのシーケンスを想定して、スライスオブジェクトスライスから開始、停止、およびステップのインデックスを取得します。 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
が設定されていないか、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)
スライスオブジェクトから開始、停止、およびステップのデータメンバーを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 と同様に、シングルトンオブジェクトです。