Если вы посмотрите на документы для bytes
, он указывает на bytearray
:
bytearray ([источник [, кодировка [, ошибки]]])
Возвращает новый массив байтов.Тип bytearray - это изменяемая последовательность целых чисел в диапазоне 0 <= x <256. Он имеет большинство обычных методов изменяемых последовательностей, описанных в Mutable Sequence Types, а также большинство методов, которые имеет тип bytes, см. Байты иМетоды байтового массива. </p>
Необязательный параметр источника можно использовать для инициализации массива несколькими различными способами:
Если это строка, вы также должны указать кодировку (иопционально, ошибки) параметры;Затем bytearray () преобразует строку в байты с помощью str.encode ().
Если это целое число, массив будет иметь такой размер и будет инициализирован нулевыми байтами.
Если это объект, соответствующий интерфейсу буфера, для инициализации массива байтов будет использоваться буфер только для чтения объекта.
Если это итерация, это должна быть итерация целых чисел в диапазоне 0 <= x <256, которые используются в качестве начального содержимого массива. </strong>
без аргумента,создается массив размером 0.
Так что bytes
может сделать гораздо больше, чем просто кодировать строку.Это Pythonic, что позволит вам вызывать конструктор с любым типом исходного параметра, который имеет смысл.
Для кодирования строки, я думаю, что some_string.encode(encoding)
более Pythonic, чем использование конструктора, потому что это наиболее самодокументируемый - "взять эту строку и кодировать ее с помощью этой кодировки" яснее, чем bytes(some_string, encoding)
- при использовании конструктора нет явного глагола.
Редактировать: Я проверил исходный код Python.Если вы передаете строку Unicode в bytes
с использованием CPython, он вызывает PyUnicode_AsEncodedString , который является реализацией encode
;так что вы просто пропускаете уровень косвенности, если сами звоните encode
.
Кроме того, см. комментарий Сердалиса - unicode_string.encode(encoding)
также более Pythonic, потому что его инверсия равна byte_string.decode(encoding)
и симметрия хороша.