시퀀스 프로토콜¶
-
int PySequence_Check(PyObject *o)¶
- Part of the Stable ABI.
Return
1
if the object provides the sequence protocol, and0
otherwise. Note that it returns1
for Python classes with a__getitem__()
method, unless they aredict
subclasses, since in general it is impossible to determine what type of keys the class supports. This function always succeeds.
-
Py_ssize_t PySequence_Size(PyObject *o)¶
-
Py_ssize_t PySequence_Length(PyObject *o)¶
- Part of the Stable ABI.
성공 시 시퀀스 o의 객체 수를 반환하고, 실패하면
-1
을 반환합니다. 이것은 파이썬 표현식len(o)
와 동등합니다.
-
PyObject *PySequence_Concat(PyObject *o1, PyObject *o2)¶
- Return value: New reference. Part of the Stable ABI.
성공 시 o1와 o2의 이어붙이기를 반환하고, 실패하면
NULL
을 반환합니다. 이것은 파이썬 표현식o1 + o2
와 동등합니다.
-
PyObject *PySequence_Repeat(PyObject *o, Py_ssize_t count)¶
- Return value: New reference. Part of the Stable ABI.
시퀸스 객체 o를 count 번 반복한 결과를 반환하거나, 실패 시
NULL
을 반환합니다. 이것은 파이썬 표현식o * count
와 동등합니다.
-
PyObject *PySequence_InPlaceConcat(PyObject *o1, PyObject *o2)¶
- Return value: New reference. Part of the Stable ABI.
성공 시 o1와 o2의 이어붙이기를 반환하고, 실패하면
NULL
을 반환합니다. 이 연산은 o1가 지원하면 제자리에서(in-place) 수행됩니다. 이것은 파이썬 표현식o1 += o2
와 동등합니다.
-
PyObject *PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count)¶
- Return value: New reference. Part of the Stable ABI.
시퀸스 객체 o를 count 번 반복한 결과를 반환하거나, 실패 시
NULL
을 반환합니다. 이 연산은 o가 지원하면 제자리에서(in-place) 수행됩니다. 이것은 파이썬 표현식o *= count
와 동등합니다.
-
PyObject *PySequence_GetItem(PyObject *o, Py_ssize_t i)¶
- Return value: New reference. Part of the Stable ABI.
o의 i 번째 요소를 반환하거나, 실패하면
NULL
을 반환합니다. 이것은 파이썬 표현식o[i]
와 동등합니다.
-
PyObject *PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶
- Return value: New reference. Part of the Stable ABI.
시퀀스 객체 o의 i1와 i2 사이의 슬라이스를 반환하거나, 실패하면
NULL
을 반환합니다. 이것은 파이썬 표현식o[i1:i2]
와 동등합니다.
-
int PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v)¶
- Part of the Stable ABI.
객체 v를 o의 i 번째 요소에 대입합니다. 실패하면 예외를 발생시키고
-1
을 반환합니다; 성공하면0
을 반환합니다. 이것은 파이썬 문장o[i] = v
와 동등합니다. 이 함수는 v에 대한 참조를 훔치지 않습니다.If v is
NULL
, the element is deleted, but this feature is deprecated in favour of usingPySequence_DelItem()
.
-
int PySequence_DelItem(PyObject *o, Py_ssize_t i)¶
- Part of the Stable ABI.
o 객체의 i 번째 요소를 삭제합니다. 실패하면
-1
을 반환합니다. 이것은 파이썬 문장del o[i]
와 동등합니다.
-
int PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, PyObject *v)¶
- Part of the Stable ABI.
시퀀스 객체 v를 시퀀스 객체 o의 i1에서 i2 사이의 슬라이스에 대입합니다. 이것은 파이썬 문장
o[i1:i2] = v
와 동등합니다.
-
int PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶
- Part of the Stable ABI.
시퀀스 객체 o의 i1에서 i2 사이의 슬라이스를 삭제합니다. 실패하면
-1
을 반환합니다. 이것은 파이썬 문장del o[i1:i2]
와 동등합니다.
-
Py_ssize_t PySequence_Count(PyObject *o, PyObject *value)¶
- Part of the Stable ABI.
o에 있는 value의 수를 반환합니다. 즉,
o[key] == value
를 만족하는 key의 수를 반환합니다. 실패하면-1
을 반환합니다. 이것은 파이썬 표현식o.count(value)
와 동등합니다.
-
int PySequence_Contains(PyObject *o, PyObject *value)¶
- Part of the Stable ABI.
o에 value가 있는지 확인합니다. o의 항목 중 하나가 value와 같으면
1
을 반환하고, 그렇지 않으면0
을 반환합니다. 에러 시-1
을 반환합니다. 이는 파이썬 표현식value in o
와 동등합니다.
-
Py_ssize_t PySequence_Index(PyObject *o, PyObject *value)¶
- Part of the Stable ABI.
o[i] == value
을 만족하는 첫 번째 인덱스 i를 반환합니다. 에러 시-1
을 반환합니다. 이것은 파이썬 표현식o.index(value)
와 동등합니다.
-
PyObject *PySequence_List(PyObject *o)¶
- Return value: New reference. Part of the Stable ABI.
시퀀스나 이터러블 o와 같은 내용을 가진 리스트 객체를 반환하거나, 실패하면
NULL
을 반환합니다. 반환된 리스트는 새로운 것으로 보장됩니다. 이것은 파이썬 표현식list(o)
와 동등합니다.
-
PyObject *PySequence_Tuple(PyObject *o)¶
- Return value: New reference. Part of the Stable ABI.
시퀀스나 이터러블 o와 같은 내용을 가진 튜플 객체를 반환하거나, 실패하면
NULL
을 반환합니다. o가 튜플이면, 새로운 참조가 반환되고, 그렇지 않으면 튜플이 적절한 내용으로 만들어집니다. 이것은 파이썬 표현식tuple(o)
와 동등합니다.
-
PyObject *PySequence_Fast(PyObject *o, const char *m)¶
- Return value: New reference. Part of the Stable ABI.
시퀀스나 이터러블 o를 다른
PySequence_Fast*
계열 함수에서 사용할 수 있는 객체로 반환합니다. 객체가 시퀀스나 이터러블이 아니면 m을 메시지 텍스트로 사용하여TypeError
를 발생시킵니다. 실패 시NULL
을 반환합니다.PySequence_Fast*
함수는 o가PyTupleObject
나PyListObject
라고 가정하고 o의 데이터 필드에 직접 액세스하기 때문에 이렇게 이름 붙였습니다.CPython 구현 세부 사항으로, o가 이미 시퀀스나 리스트면, 반환됩니다.
-
Py_ssize_t PySequence_Fast_GET_SIZE(PyObject *o)¶
Returns the length of o, assuming that o was returned by
PySequence_Fast()
and that o is notNULL
. The size can also be retrieved by callingPySequence_Size()
on o, butPySequence_Fast_GET_SIZE()
is faster because it can assume o is a list or tuple.
-
PyObject *PySequence_Fast_GET_ITEM(PyObject *o, Py_ssize_t i)¶
- Return value: Borrowed reference.
o의 i 번째 요소를 반환하는데, o가
PySequence_Fast()
에 의해 반환되었고, o가NULL
이 아니며, i가 경계 내에 있다고 가정합니다.
-
PyObject **PySequence_Fast_ITEMS(PyObject *o)¶
PyObject 포인터의 하부 배열을 반환합니다. o가
PySequence_Fast()
에 의해 반환되었고, o가NULL
이 아니라고 가정합니다.리스트의 크기가 변경되면, 재할당이 항목 배열을 재배치할 수 있음에 유의하십시오. 따라서, 시퀀스가 변경될 수 없는 문맥에서만 하부 배열 포인터를 사용하십시오.
-
PyObject *PySequence_ITEM(PyObject *o, Py_ssize_t i)¶
- Return value: New reference.
o의 i 번째 요소를 반환하거나, 실패하면
NULL
을 반환합니다.PySequence_GetItem()
의 빠른 형식이지만, o에 대해PySequence_Check()
가 참인지 검사하지 않고, 음수 인덱스를 조정하지 않습니다.