슬라이스 객체

PyTypeObject PySlice_Type

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

int PySlice_Check(PyObject *ob)

ob가 슬라이스 객체면 참을 반환합니다. obNULL이 아니어야 합니다.

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

지정된 값으로 새로운 슬라이스 객체를 반환합니다. start, stopstep 매개 변수는 같은 이름의 슬라이스 객체 어트리뷰트의 값으로 사용됩니다. 모든 값은 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인 시퀀스를 가정하여, 슬라이스 객체 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과 마찬가지로 싱글톤 객체입니다.