Документация Python неофициальный перевод

Объекты bytesBytes Objects

Эти функции возбуждают TypeError, если ожидается параметр типа bytes, но передан параметр другого типа.

PyBytesObject

Этот подтип PyObject представляет объект Python bytes.

PyTypeObject PyBytes_Type

Этот экземпляр PyTypeObject представляет тип bytes в Python; это тот же объект, что и bytes в слое Python.

int PyBytes_Check(PyObject *o)

Возвращает истину, если объект o является объектом bytes или экземпляром подтипа типа bytes.

int PyBytes_CheckExact(PyObject *o)

Возвращает истину, если объект o является объектом bytes, но не экземпляром подтипа типа bytes.

PyObject* PyBytes_FromString(const char *v)

Возвращает новый объект bytes с копией строки v в качестве значения в случае успеха и NULL в случае ошибки. Параметр v не должен быть NULL; он не будет проверяться.

PyObject* PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)

Возвращает новый объект bytes с копией строки v в качестве значения и длины len при успехе, и NULL при ошибке. Если v равно NULL, содержимое объекта bytes не инициализировано.

PyObject* PyBytes_FromFormat(const char *format, ...)

Принимает строку формата в стиле C printf(), строку format и переменное количество аргументов, вычисляет размер результирующего объекта bytes Python и возвращает объект bytes, в который отформатированы значения. Переменные аргументы должны быть типами C и точно соответствовать символам формата в строке format. Допускаются следующие символы формата:

Символы формата

Тип

Описание

%%

н/д

Буквальный символ %.

%c

int

Один байт, представленный как C int.

%d

int

Полностью эквивалентно printf("%d").

%u

unsigned int

Полностью эквивалентно printf("%u").

%ld

long

Полностью эквивалентно printf("%ld").

%lu

unsigned long

Полностью эквивалентно printf("%lu").

%zd

Py_ssize_t

Полностью эквивалентно printf("%zd").

%zu

size_t

Полностью эквивалентно printf("%zu").

%i

int

Полностью эквивалентно printf("%i").

%x

int

Полностью эквивалентно printf("%x").

%s

char*

Нуль-терминированный массив символов C.

%p

void*

Шестнадцатеричное представление указателя C. В основном эквивалентно printf("%p"), за исключением того, что гарантированно начинается с литерала 0x независимо от того, что возвращает printf на данной платформе.

Нераспознанный символ формата приводит к тому, что вся оставшаяся строка формата копируется как есть в результирующий объект, а все лишние аргументы отбрасываются.

PyObject* PyBytes_FromFormatV(const char *format, va_list vargs)

Идентично PyBytes_FromFormat(), за исключением того, что принимает ровно два аргумента.

PyObject* PyBytes_FromObject(PyObject *o)

Возвращает байтовое представление объекта o, реализующего протокол буфера.

Py_ssize_t PyBytes_Size(PyObject *o)

Возвращает длину байтов в байтовом объекте o.

Py_ssize_t PyBytes_GET_SIZE(PyObject *o)

Макроформа PyBytes_Size() без проверки ошибок.

char* PyBytes_AsString(PyObject *o)

Возвращает указатель на содержимое o. Указатель ссылается на внутренний буфер o, который состоит из len(o) + 1 байт. Последний байт в буфере всегда нулевой, независимо от того, есть ли другие нулевые байты. Данные не должны изменяться никаким образом, если только объект не был только что создан с помощью PyBytes_FromStringAndSize(NULL, size). Он не должен быть освобождён. Если o не является объектом bytes, PyBytes_AsString() возвращает NULL и вызывает TypeError.

char* PyBytes_AS_STRING(PyObject *string)

Макроформа PyBytes_AsString() без проверки ошибок.

int PyBytes_AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length)

Возвращает содержимое объекта obj, завершённое нулевым символом, через выходные переменные buffer и length.

Если length равно NULL, объект bytes не должен содержать встроенных нулевых байт; если это так, функция возвращает -1 и вызывается ValueError.

Буфер ссылается на внутренний буфер obj, который содержит дополнительный нулевой байт в конце (не учитывается в length). Данные нельзя изменять никаким образом, за исключением случая, когда объект только что был создан с помощью PyBytes_FromStringAndSize(NULL, size). Его нельзя освобождать. Если obj вообще не является байтовым объектом, PyBytes_AsStringAndSize() возвращает -1 и возбуждает TypeError.

Изменено в версии 3.5: Ранее, TypeError возбуждалось, когда в байтовом объекте встречались встроенные нулевые байты.

void PyBytes_Concat(PyObject **bytes, PyObject *newpart)

Создаёт новый объект bytes в *bytes, содержащий содержимое newpart, добавленное к bytes; вызывающий становится владельцем новой ссылки. Ссылка на старое значение bytes будет украдена. Если новый объект не может быть создан, старая ссылка на bytes всё равно будет отброшена, а значение *bytes будет установлено в NULL; будет установлено соответствующее исключение.

void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)

Создаёт новый объект bytes в *bytes, содержащий содержимое newpart, добавленное к bytes. Эта версия уменьшает счётчик ссылок newpart.

int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)

Способ изменить размер объекта bytes, несмотря на то, что он «неизменяемый». Используйте это только для сборки совершенно нового объекта bytes; не используйте, если байты могут уже быть известны в других частях кода. Вызов этой функции является ошибкой, если счётчик ссылок на входной объект bytes не равен единице. Передайте адрес существующего объекта bytes как lvalue (в него может быть произведена запись) и желаемый новый размер. В случае успеха *bytes содержит изменённый объект bytes и возвращается 0; адрес в *bytes может отличаться от входного значения. Если перераспределение не удалось, исходный объект bytes по адресу *bytes освобождается, *bytes устанавливается в NULL, устанавливается MemoryError и возвращается -1.