시퀀스 프로토콜¶
-
int
PySequence_Check
(PyObject *o)¶ 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)¶ 성공 시 시퀀스 o의 객체 수를 반환하고, 실패하면
-1
을 반환합니다. 이것은 파이썬 표현식len(o)
와 동등합니다.
-
PyObject*
PySequence_Concat
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
성공 시 o1와 o2의 이어붙이기를 반환하고, 실패하면
NULL
을 반환합니다. 이것은 파이썬 표현식o1 + o2
와 동등합니다.
-
PyObject*
PySequence_Repeat
(PyObject *o, Py_ssize_t count)¶ - Return value: New reference.
시퀸스 객체 o를 count 번 반복한 결과를 반환하거나, 실패 시
NULL
을 반환합니다. 이것은 파이썬 표현식o * count
와 동등합니다.
-
PyObject*
PySequence_InPlaceConcat
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
성공 시 o1와 o2의 이어붙이기를 반환하고, 실패하면
NULL
을 반환합니다. 이 연산은 o1가 지원하면 제자리에서(in-place) 수행됩니다. 이것은 파이썬 표현식o1 += o2
와 동등합니다.
-
PyObject*
PySequence_InPlaceRepeat
(PyObject *o, Py_ssize_t count)¶ - Return value: New reference.
시퀸스 객체 o를 count 번 반복한 결과를 반환하거나, 실패 시
NULL
을 반환합니다. 이 연산은 o가 지원하면 제자리에서(in-place) 수행됩니다. 이것은 파이썬 표현식o *= count
와 동등합니다.
-
PyObject*
PySequence_GetItem
(PyObject *o, Py_ssize_t i)¶ - Return value: New reference.
o의 i 번째 요소를 반환하거나, 실패하면
NULL
을 반환합니다. 이것은 파이썬 표현식o[i]
와 동등합니다.
-
PyObject*
PySequence_GetSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶ - Return value: New reference.
시퀀스 객체 o의 i1와 i2 사이의 슬라이스를 반환하거나, 실패하면
NULL
을 반환합니다. 이것은 파이썬 표현식o[i1:i2]
와 동등합니다.
-
int
PySequence_SetItem
(PyObject *o, Py_ssize_t i, PyObject *v)¶ 객체 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)¶ o 객체의 i 번째 요소를 삭제합니다. 실패하면
-1
을 반환합니다. 이것은 파이썬 문장del o[i]
와 동등합니다.
-
int
PySequence_SetSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, PyObject *v)¶ 시퀀스 객체 v를 시퀀스 객체 o의 i1에서 i2 사이의 슬라이스에 대입합니다. 이것은 파이썬 문장
o[i1:i2] = v
와 동등합니다.
-
int
PySequence_DelSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶ 시퀀스 객체 o의 i1에서 i2 사이의 슬라이스를 삭제합니다. 실패하면
-1
을 반환합니다. 이것은 파이썬 문장del o[i1:i2]
와 동등합니다.
-
Py_ssize_t
PySequence_Count
(PyObject *o, PyObject *value)¶ o에 있는 value의 수를 반환합니다. 즉,
o[key] == value
를 만족하는 key의 수를 반환합니다. 실패하면-1
을 반환합니다. 이것은 파이썬 표현식o.count(value)
와 동등합니다.
-
int
PySequence_Contains
(PyObject *o, PyObject *value)¶ o에 value가 있는지 확인합니다. o의 항목 중 하나가 value와 같으면
1
을 반환하고, 그렇지 않으면0
을 반환합니다. 에러 시-1
을 반환합니다. 이는 파이썬 표현식value in o
와 동등합니다.
-
Py_ssize_t
PySequence_Index
(PyObject *o, PyObject *value)¶ o[i] == value
을 만족하는 첫 번째 인덱스 i를 반환합니다. 에러 시-1
을 반환합니다. 이것은 파이썬 표현식o.index(value)
와 동등합니다.
-
PyObject*
PySequence_List
(PyObject *o)¶ - Return value: New reference.
시퀀스나 이터러블 o와 같은 내용을 가진 리스트 객체를 반환하거나, 실패하면
NULL
을 반환합니다. 반환된 리스트는 새로운 것으로 보장됩니다. 이것은 파이썬 표현식list(o)
와 동등합니다.
-
PyObject*
PySequence_Tuple
(PyObject *o)¶ - Return value: New reference.
시퀀스나 이터러블 o와 같은 내용을 가진 튜플 객체를 반환하거나, 실패하면
NULL
을 반환합니다. o가 튜플이면, 새로운 참조가 반환되고, 그렇지 않으면 튜플이 적절한 내용으로 만들어집니다. 이것은 파이썬 표현식tuple(o)
와 동등합니다.
-
PyObject*
PySequence_Fast
(PyObject *o, const char *m)¶ - Return value: New reference.
시퀀스나 이터러블 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()
가 참인지 검사하지 않고, 음수 인덱스를 조정하지 않습니다.