Python Glossary English

Python 3.15+Байтовые последовательностифункция

bytearray.take_bytes()

bytearray — мутирующие

Забирает первые n байт из bytearray и возвращает их как bytes, удаляя из буфера. Без аргумента забирает всё и очищает буфер без копирования.

Синтаксис

bytearray.take_bytes(n=None, /)

Типичный приём «накопить в bytearray, отдать bytes» раньше писали как data = bytes(buf); buf.clear() — это копия всего буфера. take_bytes() без аргумента отдаёт содержимое без копирования и оставляет буфер пустым. С n забирает начало, а остаток сдвигается — это уже копия хвоста, поэтому для разбора потока по кадрам выгоднее сначала обрезать лишнее. Отрицательное n считается с конца, как в срезах: take_bytes(-2) забирает всё, кроме двух последних байт. n за пределами длины — IndexError, а не молчаливое «сколько есть», как у среза.

Примеры

buf = bytearray(b'hello world')
head = buf.take_bytes(5)
print(head)  # → b'hello'
print(buf)  # → bytearray(b' world')
rest = buf.take_bytes()
print(rest, buf)  # → b' world' bytearray(b'')
buf = bytearray(b'abc')
try:
    buf.take_bytes(10)
except IndexError as e:
    print(type(e).__name__)  # → IndexError

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности