# 슬라이스 객체

PyTypeObject PySlice_Type
  Part of the Stable ABI.

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

int PySlice_Check(PyObject *ob)

  ob가 슬라이스 객체면 참을 반환합니다. ob는 `NULL`이 아니어야 합니다. 이 함수는 항상 성공합니다.

PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
  Return value: New reference. Part of the Stable ABI.

  지정된 값으로 새로운 슬라이스 객체를 반환합니다. 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)
  Part of the Stable ABI.

  길이가 length인 시퀀스를 가정하여, 슬라이스 객체 slice에서 start, stop 및 step 인덱스를 가져옵니다. length보다 큰 인덱스를 에러로 처리합니다.

  Returns `0` on success and `-1` on error with no exception set (unless one of the indices was not `None` and failed to be converted to an integer, in which case `-1` is returned with an exception set).

  이 기능을 사용하고 싶지는 않을 것입니다.

  버전 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)
  Part of the Stable ABI.

  `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`가 설정되어 있지 않거나 `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)
  Part of the Stable ABI since version 3.7.

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

  Added in version 3.6.1.

Py_ssize_t PySlice_AdjustIndices(Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)
  Part of the Stable ABI since version 3.7.

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

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

  Added in version 3.6.1.

## Ellipsis 객체

PyObject *Py_Ellipsis

  The Python `Ellipsis` object. This object has no methods. Like `Py_None`, it is an immortal. singleton object.

  버전 3.12에서 변경: `Py_Ellipsis` is immortal.