Функция 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}!' 







