Вчера мы опубликовали коротенькую, но интересную задачу. Верно ответили 43% из 37-ми человек.

Код задачи:

x = b'1001'
y = b'1010'

print(x + y)

Разбор задачи Задача короткая и разбор будет таким же.

Создаём две переменные x и y, в которые помещаем две байтовые строки (byte string).

Далее в функции print() выводим результат конкатенации строк.

Думаю, на этом моменте уже стало понятно, почему правильный ответ b'10011010'.

Про строки байт. Байтовые строки - это последовательность необработанных байт от 0 до 255, интерполируемая Python как строка, но со специальным литералом b"", в то время как обычные строки, это набор символов в определённой кодировке (обычно это UTF-8).

Такие строки позволяют оперировать различными данными, которые не предназначены для чтения человеком, например, бинарные файлы, изображения. Даже пересылаемый по интернету JSON, без обработки и сериализации - является байтовой строкой.

Превратить обычную строку в байтовую можно двумя способами: 1. Добавив перед кавычками литерал b - b"строка_текста". 2. Использовав метод строки .encode("кодировка") с указанием желаемой кодировки - "строка_текста".encode("utf8"). Преобразовать байтовую строку с текстом обратно можно использовав метод строки .decode("utf8").

Байтовые строки, практически ничем не отличаются от обычных. Им доступны всё те же методы и функции. Такие как: доступ к элементам по индексу, конкатенация, .split(), "".join() и другие.

Понимание работы байтовых строк особенно полезно при веб-разработке, поскольку все данные пересылаемые через интернет - являются набором байт. Данные кодируются в байты, пересылаются, затем декодируются, согласно требуемому формату данных.