Функция bytes
в Python используется для создания неизменяемых последовательностей байт. Это важный инструмент для работы с бинарными данными. В этой статье мы подробно рассмотрим синтаксис функции, ее параметры, примеры использования и ключевые особенности.
В отличие от
bytearray
, объектыbytes
являются неизменяемыми. После создания объектbytes
нельзя изменить. Если вам нужно изменить байтовые данные, используйтеbytearray
.
Содержание
- Синтаксис
- Аргументы
- Примеры использования
- Пример 1: Создание bytes из строки
- Пример 2: Создание bytes из байтового объекта
- Пример 3: Создание bytes из списка целых чисел
- Пример 4: Создание пустого bytes
- Параметры encoding и errors
- Использование параметра encoding
- Использование параметра errors
- Примеры использования параметров error
- Пример 1: Использование strict (по умолчанию)
- Пример 2: Использование ignore
- Пример 3: Использование replace
- Пример 4: Использование xmlcharrefreplace
- Пример 5: Использование backslashreplace
- Пример 6: Использование namereplace
Синтаксис
bytes([source[, encoding[, errors]]])
Аргументы
source
: (необязательный) Исходные данные для создания объектаbytes
. Это может быть строка, байтовый объект, объект, поддерживающий буферный интерфейс, итерация целых чисел, диапазон, другой объектbytes
илиbytearray
.encoding
: (необязательный) Строка, определяющая кодировку для преобразования строки в байты. Используется только еслиsource
является строкой.errors
: (необязательный) Строка, определяющая способ обработки ошибок кодирования. Используется только еслиsource
является строкой.
Примеры использования
Пример 1: Создание bytes
из строки
data = "Hello, World!"
byte_data = bytes(data, "utf-8")
print(byte_data)
# Вывод: b'Hello, World!'
Пример 2: Создание bytes
из байтового объекта
byte_data = bytes(b"Hello, World!")
print(byte_data)
# Вывод: b'Hello, World!'
Пример 3: Создание bytes
из списка целых чисел
byte_data = bytes([72, 101, 108, 108, 111])
print(byte_data)
# Вывод: b'Hello'
Пример 4: Создание пустого bytes
byte_data = bytes()
print(byte_data)
# Вывод: b''
Параметры encoding
и errors
Использование параметра encoding
Параметр encoding
указывается для преобразования строки в байты. Например, для использования кодировки UTF-8:
data = "Привет, мир!"
byte_data = bytes(data, "utf-8")
print(byte_data)
# Вывод: b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82, \xd0\xbc\xd0\xb8\xd1\x80!'
Использование параметра errors
Параметр errors
определяет, как обрабатывать ошибки кодирования. Доступные значения: strict
(по умолчанию), ignore
, replace
, xmlcharrefreplace
, backslashreplace
, namereplace
.
strict
: Вызывает ошибкуUnicodeEncodeError
при наличии некодируемых символов.ignore
: Игнорирует некодируемые символы.replace
: Заменяет некодируемые символы знаком вопроса?
.xmlcharrefreplace
: Заменяет некодируемые символы XML-ссылками.backslashreplace
: Заменяет некодируемые символы escape-последовательностями.namereplace
: Заменяет некодируемые символы именованными escape-последовательностями.
Примеры использования параметров error
Пример 1: Использование strict
(по умолчанию)
data = "Привет, мир!"
try:
byte_data = bytes(data, "ascii", errors="strict")
except UnicodeEncodeError as e:
print("Ошибка кодирования:", e)
# Вывод: Ошибка кодирования: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)
Пример 2: Использование ignore
data = "Привет, мир!"
byte_data = bytes(data, "ascii", errors="ignore")
print(byte_data)
# Вывод: b', !'
Пример 3: Использование replace
data = "Привет, мир!"
byte_data = bytes(data, "ascii", errors="replace")
print(byte_data)
# Вывод: b'??????, ???!'
Пример 4: Использование xmlcharrefreplace
data = "Привет, мир!"
byte_data = bytes(data, "ascii", errors="xmlcharrefreplace")
print(byte_data)
# Вывод: b'Привет, мир!'
Пример 5: Использование backslashreplace
data = "Привет, мир!"
byte_data = bytes(data, "ascii", errors="backslashreplace")
print(byte_data)
# Вывод: b'\\u041f\\u0440\\u0438\\u0432\\u0435\\u0442, \\u043c\\u0438\\u0440!'
Пример 6: Использование namereplace
data = "Привет, мир!"
byte_data = bytes(data, "ascii", errors="namereplace")
print(byte_data)
# Вывод: b'\\N{CYRILLIC CAPITAL LETTER PE}\\N{CYRILLIC SMALL LETTER ER}\\N{CYRILLIC SMALL LETTER I}\\N{CYRILLIC SMALL LETTER VE}\\N{CYRILLIC SMALL LETTER IE}\\N{CYRILLIC SMALL LETTER TE}, \\N{CYRILLIC SMALL LETTER EM}\\N{CYRILLIC SMALL LETTER I}\\N{CYRILLIC SMALL LETTER ER}!'