スライスオブジェクト (slice object)¶
-
PyTypeObject
PySlice_Type
¶ スライスオブジェクトの型オブジェクトです。これは、Pythonレイヤにおける
slice
と同じオブジェクトです。
-
PyObject*
PySlice_New
(PyObject *start, PyObject *stop, PyObject *step)¶ - Return value: New reference.
指定した値から新たなスライスオブジェクトを返します。パラメタ 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)¶ スライスオブジェクト 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)¶ PySlice_GetIndices()
の便利な代替です。 slice における、start, stop および step のインデクス値を取得をします。シーケンスの長さを length 、スライスの長さを slicelength に格納します。境界外のインデクスは通常のスライスと一貫した方法でクリップされます。成功のときには
0
を、エラーのときには例外をセットして-1
を返します。注釈
This function is considered not safe for resizable sequences. Its invocation should be replaced by a combination of
PySlice_Unpack()
andPySlice_AdjustIndices()
whereif (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) { // return error }
is replaced by
if (PySlice_Unpack(slice, &start, &stop, &step) < 0) { // return error } slicelength = PySlice_AdjustIndices(length, &start, &stop, step);
バージョン 3.2 で変更: 以前は、slice 引数の型は
PySliceObject*
でした。バージョン 3.6.1 で変更: If
Py_LIMITED_API
is not set or set to the value between0x03050400
and0x03060000
(not including) or0x03060100
or higherPySlice_GetIndicesEx()
is implemented as a macro usingPySlice_Unpack()
andPySlice_AdjustIndices()
. Arguments start, stop and step are evaluated more than once.バージョン 3.6.1 で非推奨: If
Py_LIMITED_API
is set to the value less than0x03050400
or between0x03060000
and0x03060100
(not including)PySlice_GetIndicesEx()
is a deprecated function.
-
int
PySlice_Unpack
(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)¶ Extract the start, stop and step data members from a slice object as C integers. Silently reduce values larger than
PY_SSIZE_T_MAX
toPY_SSIZE_T_MAX
, silently boost the start and stop values less thanPY_SSIZE_T_MIN
toPY_SSIZE_T_MIN
, and silently boost the step values less than-PY_SSIZE_T_MAX
to-PY_SSIZE_T_MAX
.Return
-1
on error,0
on success.バージョン 3.6.1 で追加.
-
Py_ssize_t
PySlice_AdjustIndices
(Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)¶ Adjust start/end slice indices assuming a sequence of the specified length. Out of bounds indices are clipped in a manner consistent with the handling of normal slices.
Return the length of the slice. Always successful. Doesn't call Python code.
バージョン 3.6.1 で追加.