bytearray.md
1> **Источник:** https://python-all.ru/3.15/c-api/bytearray.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты bytearray89#### `type PyByteArrayObject`1011Этот подтип [`PyObject`](https://python-all.ru/3.15/c-api/structures.html#c.PyObject) представляет объект bytearray Python.1213#### `PyTypeObject PyByteArray_Type`1415*Часть [Stable ABI](https://python-all.ru/3.15/c-api/stable.html#stable).*1617Этот экземпляр [`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.1819## Макросы проверки типа2021#### `int PyByteArray_Check(PyObject *o)`2223Возвращает true, если объект *o* является объектом bytearray или экземпляром подтипа типа bytearray. Эта функция всегда завершается успешно.2425#### `int PyByteArray_CheckExact(PyObject *o)`2627Возвращает true, если объект *o* является объектом bytearray, но не экземпляром подтипа типа bytearray. Эта функция всегда завершается успешно.2829## Прямые функции API3031#### `PyObject *PyByteArray_FromObject(PyObject *o)`3233*Возвращаемое значение: новая ссылка.*3435*Часть [Stable ABI](https://python-all.ru/3.15/c-api/stable.html#stable).*3637*Потокобезопасность: [Безопасно для одновременного использования на одном объекте](https://python-all.ru/3.15/library/threadsafety.html#threadsafety-level-shared).*3839Возвращает новый объект bytearray из любого объекта, *o*, который реализует [протокол буфера](https://python-all.ru/3.15/c-api/buffer.html#bufferobjects).4041При ошибке возвращает `NULL` с установленным исключением.4243> **Примечание**44>45> Если объект реализует буферный протокол, то буфер не должен изменяться во время создания объекта байтового массива.4647#### `PyObject *PyByteArray_FromStringAndSize(const char *string, Py_ssize_t len)`4849*Возвращаемое значение: новая ссылка.*5051*Часть [стабильного ABI](https://python-all.ru/3.15/c-api/stable.html#stable).*5253*Потокобезопасность: [атомарно](https://python-all.ru/3.15/library/threadsafety.html#threadsafety-level-atomic).*5455Создаёт новый объект bytearray из *string* и его длины, *len*.5657При ошибке возвращает `NULL` с установленным исключением.5859#### `PyObject *PyByteArray_Concat(PyObject *a, PyObject *b)`6061*Возвращаемое значение: новая ссылка.*6263*Часть [Stable ABI](https://python-all.ru/3.15/c-api/stable.html#stable).*6465*Потокобезопасность: [Безопасно для одновременного использования на одном объекте](https://python-all.ru/3.15/library/threadsafety.html#threadsafety-level-shared).*6667Объединяет байтовые массивы *a* и *b* и возвращает новый байтовый массив с результатом.6869При ошибке возвращает `NULL` с установленным исключением.7071> **Примечание**72>73> Если объект реализует буферный протокол, то буфер не должен изменяться во время создания объекта байтового массива.7475#### `Py_ssize_t PyByteArray_Size(PyObject *bytearray)`7677*Часть [Stable ABI](https://python-all.ru/3.15/c-api/stable.html#stable).*7879*Потокобезопасность: [Атомарно](https://python-all.ru/3.15/library/threadsafety.html#threadsafety-level-atomic).*8081Возвращает размер *байтового массива* после проверки указателя `NULL`.8283#### `char *PyByteArray_AsString(PyObject *bytearray)`8485*Часть [Stable ABI](https://python-all.ru/3.15/c-api/stable.html#stable).*8687*Потокобезопасность: [Безопасен для вызова из нескольких потоков только с внешней синхронизацией](https://python-all.ru/3.15/library/threadsafety.html#threadsafety-level-compatible).*8889Возвращает содержимое *байтового массива* как массив char после проверки указателя `NULL`. Возвращаемый массив всегда содержит дополнительный нулевой байт в конце.9091> **Примечание**92>93> Не является потокобезопасным изменять объект байтового массива при использовании возвращённого массива char.9495#### `int PyByteArray_Resize(PyObject *bytearray, Py_ssize_t len)`9697*Часть [Stable ABI](https://python-all.ru/3.15/c-api/stable.html#stable).*9899Изменяет размер внутреннего буфера *байтового массива* до *len*. При ошибке возвращается `-1` с установленным исключением.100101Изменено в версии 3.14: Отрицательное значение *len* теперь приводит к установке исключения и возврату -1.102103## Макросы104105Эти макросы жертвуют безопасностью ради скорости и не проверяют указатели.106107#### `char *PyByteArray_AS_STRING(PyObject *bytearray)`108109*Потокобезопасность: [Безопасно вызывать из нескольких потоков только с внешней синхронизацией](https://python-all.ru/3.15/library/threadsafety.html#threadsafety-level-compatible).*110111Аналогично [`PyByteArray_AsString()`](https://python-all.ru/3.15/c-api/bytearray.html#c.PyByteArray_AsString), но без проверки ошибок.112113> **Примечание**114>115> Не является потокобезопасным изменять объект байтового массива при использовании возвращённого массива char.116117#### `Py_ssize_t PyByteArray_GET_SIZE(PyObject *bytearray)`118119*Потокобезопасность: [атомарно](https://python-all.ru/3.15/library/threadsafety.html#threadsafety-level-atomic).*120121Аналогично [`PyByteArray_Size()`](https://python-all.ru/3.15/c-api/bytearray.html#c.PyByteArray_Size), но без проверки ошибок.122