# 슬라이스 객체

PyTypeObject `PySlice_Type`

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

int `PySlice_Check`(PyObject *ob)

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

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)

  길이가 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`가 설정되어 있지 않거나 `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)

  슬라이스 객체의 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`과 마찬가지로 싱글톤 객체입니다.