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

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.*

   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" with an exception set 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)
    * 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*에 슬라이스의 길이를 저장합니다. 범위를
   벗어난 인덱스는 일반 슬라이스의 처리와 일관된 방식으로 잘립니다.

   Return "0" on success and "-1" on error with an exception set.

   참고:

     이 함수는 크기를 조정할 수 있는 시퀀스에는 안전하지 않은 것으로
     간주합니다. 호출은 "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"
   로 조용히 높입니다.

   Return "-1" with an exception set on error, "0" on success.

   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.
