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

---

# Объекты bytearray

#### `type PyByteArrayObject`

Этот подтип [`PyObject`](https://python-all.ru/3.13/c-api/structures.html#c.PyObject) представляет объект bytearray Python.

#### `PyTypeObject PyByteArray_Type`

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

Этот экземпляр [`PyTypeObject`](https://python-all.ru/3.13/c-api/type.html#c.PyTypeObject) представляет тип bytearray в Python; он является тем же объектом, что и [`bytearray`](https://python-all.ru/3.13/library/stdtypes.html#bytearray) в слое Python.

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

#### `int PyByteArray_Check(PyObject *o)`

Возвращает true, если объект *o* является объектом bytearray или экземпляром подтипа типа bytearray. Эта функция всегда завершается успешно.

#### `int PyByteArray_CheckExact(PyObject *o)`

Возвращает true, если объект *o* является объектом bytearray, но не экземпляром подтипа типа bytearray. Эта функция всегда завершается успешно.

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

#### `PyObject *PyByteArray_FromObject(PyObject *o)`

*Возвращаемое значение: новая ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

Возвращает новый объект bytearray из любого объекта, *o*, который реализует [протокол буфера](https://python-all.ru/3.13/c-api/buffer.html#bufferobjects).

При ошибке возвращает `NULL` с установленным исключением.

#### `PyObject *PyByteArray_FromStringAndSize(const char *string, Py_ssize_t len)`

*Возвращаемое значение: новая ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

Создаёт новый объект bytearray из *string* и его длины, *len*.

При ошибке возвращает `NULL` с установленным исключением.

#### `PyObject *PyByteArray_Concat(PyObject *a, PyObject *b)`

*Возвращаемое значение: новая ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

Объединяет байтовые массивы *a* и *b* и возвращает новый байтовый массив с результатом.

При ошибке возвращает `NULL` с установленным исключением.

#### `Py_ssize_t PyByteArray_Size(PyObject *bytearray)`

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

Возвращает размер *байтового массива* после проверки указателя `NULL`.

#### `char *PyByteArray_AsString(PyObject *bytearray)`

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

Возвращает содержимое *байтового массива* как массив char после проверки указателя `NULL`. Возвращаемый массив всегда содержит дополнительный нулевой байт в конце.

#### `int PyByteArray_Resize(PyObject *bytearray, Py_ssize_t len)`

*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*

Изменяет размер внутреннего буфера *bytearray* до *len*.

## Макросы

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

#### `char *PyByteArray_AS_STRING(PyObject *bytearray)`

Аналогично [`PyByteArray_AsString()`](https://python-all.ru/3.13/c-api/bytearray.html#c.PyByteArray_AsString), но без проверки ошибок.

#### `Py_ssize_t PyByteArray_GET_SIZE(PyObject *bytearray)`

Аналогично [`PyByteArray_Size()`](https://python-all.ru/3.13/c-api/bytearray.html#c.PyByteArray_Size), но без проверки ошибок.
