슬라이스 객체

PyTypeObject PySlice_Type

슬라이스 객체의 형 객체. 이것은 파이썬 계층의 slice와 같습니다.

int PySlice_Check(PyObject *ob)

Return true if ob is a slice object; ob must not be NULL.

PyObject* PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
Return value: New reference.

Return a new slice object with the given values. The start, stop, and step parameters are used as the values of the slice object attributes of the same names. Any of the values may be NULL, in which case the None will be used for the corresponding attribute. Return NULL if the new object could not be allocated.

int PySlice_GetIndices(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)

길이가 length인 시퀀스를 가정하여, 슬라이스 객체 slice에서 start, stop 및 step 인덱스를 가져옵니다. 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()를 쓸만하게 대체합니다. 길이가 length인 시퀀스를 가정하여, 슬라이스 객체 slice에서 start, stop 및 step 인덱스를 가져오고, slicelength에 슬라이스의 길이를 저장합니다. 범위를 벗어난 인덱스는 일반 슬라이스의 처리와 일관된 방식으로 잘립니다.

성공하면 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에서 변경: 전에는 slice 매개 변수의 매개 변수 형이 PySliceObject*였습니다.

버전 3.6.1에서 변경: Py_LIMITED_API가 설정되어 있지 않거나 0x030504000x03060000 (포함하지 않음) 사이나 0x03060100 이상의 값으로 설정되었으면, PySlice_GetIndicesEx()PySlice_Unpack()PySlice_AdjustIndices()를 사용하는 매크로로 구현됩니다. 인자 start, stopstep는 여러 번 평가됩니다.

버전 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)

슬라이스 객체의 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을 반환합니다.

버전 3.6.1에 추가.

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

지정된 length 길이의 시퀀스를 가정하여 start/stop 슬라이스 인덱스를 조정합니다. 범위를 벗어난 인덱스는 일반 슬라이스의 처리와 일관된 방식으로 잘립니다.

슬라이스의 길이를 반환합니다. 항상 성공합니다. 파이썬 코드를 호출하지 않습니다.

버전 3.6.1에 추가.

Ellipsis 객체

PyObject *Py_Ellipsis

파이썬 Ellipsis 객체. 이 객체에는 메서드가 없습니다. 참조 횟수와 관련하여 다른 객체와 마찬가지로 처리해야 합니다. Py_None과 마찬가지로 싱글 톤 객체입니다.