> **Источник:** https://python-all.ru/3.1/c-api/bytearray.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# Объекты bytearray

**`PyByteArrayObject`**

Этот подтип

[`PyObject`](https://python-all.ru/3.1/c-api/structures.html#PyObject)

представляет объект bytearray в Python.

**[PyTypeObject](https://python-all.ru/3.1/c-api/type.html#PyTypeObject) `PyByteArray_Type`**

Этот экземпляр

[`PyTypeObject`](https://python-all.ru/3.1/c-api/type.html#PyTypeObject)

представляет тип bytearray в Python; это тот же объект, что и

[`bytearray`](https://python-all.ru/3.1/library/functions.html#bytearray)

в Python.

## Макросы проверки типа

**int `PyByteArray_Check`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**

Возвращает true, если объект

*o*

является объектом bytearray или экземпляром подтипа типа bytearray.

**int `PyByteArray_CheckExact`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**

Возвращает true, если объект

*o*

является объектом bytearray, но не экземпляром подтипа типа bytearray.

## Прямые функции API

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyByteArray_FromObject`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**

Возвращает новый объект bytearray из любого объекта

*o*

, реализующего протокол буфера.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyByteArray_FromStringAndSize`(const char *\*string*, Py\_ssize\_t *len*)**

Создаёт новый объект bytearray из

*string*

и его длины

*len*

. В случае ошибки возвращается

*NULL*

.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyByteArray_Concat`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*a*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*b*)**

Объединяет байтовые массивы

*a*

и

*b*

и возвращает новый байтовый массив с результатом.

**Py\_ssize\_t `PyByteArray_Size`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*bytearray*)**

Возвращает размер

*bytearray*

после проверки указателя на

*NULL*

.

**char\* `PyByteArray_AsString`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*bytearray*)**

Возвращает содержимое

*bytearray*

в виде массива char после проверки на нулевой указатель

*NULL*

.

**int `PyByteArray_Resize`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*bytearray*, Py\_ssize\_t *len*)**

Изменяет размер внутреннего буфера

*bytearray*

до

*len*

.

## Макросы

Эти макросы жертвуют безопасностью ради скорости и не проверяют указатели.

**char\* `PyByteArray_AS_STRING`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*bytearray*)**

Макроверсия

[`PyByteArray_AsString()`](https://python-all.ru/3.1/c-api/bytearray.html#PyByteArray_AsString)

.

**Py\_ssize\_t `PyByteArray_GET_SIZE`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*bytearray*)**

Макроверсия

[`PyByteArray_Size()`](https://python-all.ru/3.1/c-api/bytearray.html#PyByteArray_Size)

.
