슬라이스 객체
*************

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"과 마찬가
   지로 싱글톤 객체입니다.
