Документация 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"). 1

%u

unsigned int

Эквивалентно printf("%u"). 1

%ld

long

Эквивалентно printf("%ld"). 1

%lu

unsigned long

Эквивалентно printf("%lu"). 1

%zd

Py_ssize_t

Эквивалентно printf("%zd"). 1

%zu

size_t

Эквивалентно printf("%zu"). 1

%i

int

Эквивалентно printf("%i"). 1

%x

int

Эквивалентно printf("%x"). 1

%s

const char*

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

%p

const void*

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

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

1(1,2,3,4,5,6,7,8)

Для целочисленных спецификаторов (d, u, ld, lu, zd, zu, i, x): флаг преобразования '0' действует, даже если задана точность.

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 вообще не является байтовым объектом, 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, байтовый объект не может содержать встроенные нулевые байты; если содержит, функция возвращает -1 и возбуждается ValueError.

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

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

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

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