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

---

# Объекты bytearray

#### `type PyByteArrayObject`

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

#### `PyTypeObject PyByteArray_Type`

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

Этот экземпляр [`PyTypeObject`](https://python-all.ru/3.15/c-api/type.html#c.PyTypeObject) представляет тип bytearray в Python; он является тем же объектом, что и [`bytearray`](https://python-all.ru/3.15/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.15/c-api/stable.html#stable).*

*Потокобезопасность: [Безопасно для одновременного использования на одном объекте](https://python-all.ru/3.15/library/threadsafety.html#threadsafety-level-shared).*

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

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

> **Примечание**
>
> Если объект реализует буферный протокол, то буфер не должен изменяться во время создания объекта байтового массива.

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

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

*Часть [стабильного ABI](https://python-all.ru/3.15/c-api/stable.html#stable).*

*Потокобезопасность: [атомарно](https://python-all.ru/3.15/library/threadsafety.html#threadsafety-level-atomic).*

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

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

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

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

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

*Потокобезопасность: [Безопасно для одновременного использования на одном объекте](https://python-all.ru/3.15/library/threadsafety.html#threadsafety-level-shared).*

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

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

> **Примечание**
>
> Если объект реализует буферный протокол, то буфер не должен изменяться во время создания объекта байтового массива.

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

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

*Потокобезопасность: [Атомарно](https://python-all.ru/3.15/library/threadsafety.html#threadsafety-level-atomic).*

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

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

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

*Потокобезопасность: [Безопасен для вызова из нескольких потоков только с внешней синхронизацией](https://python-all.ru/3.15/library/threadsafety.html#threadsafety-level-compatible).*

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

> **Примечание**
>
> Не является потокобезопасным изменять объект байтового массива при использовании возвращённого массива char.

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

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

Изменяет размер внутреннего буфера *байтового массива* до *len*. При ошибке возвращается `-1` с установленным исключением.

Изменено в версии 3.14: Отрицательное значение *len* теперь приводит к установке исключения и возврату -1.

## Макросы

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

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

*Потокобезопасность: [Безопасно вызывать из нескольких потоков только с внешней синхронизацией](https://python-all.ru/3.15/library/threadsafety.html#threadsafety-level-compatible).*

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

> **Примечание**
>
> Не является потокобезопасным изменять объект байтового массива при использовании возвращённого массива char.

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

*Потокобезопасность: [атомарно](https://python-all.ru/3.15/library/threadsafety.html#threadsafety-level-atomic).*

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