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Сообщить о неточности