슬라이스 객체¶
-
PyTypeObject
PySlice_Type
¶ 슬라이스 객체의 형 객체. 이것은 파이썬 계층의
slice
와 같습니다.
-
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에 추가.