Вчера мы опубликовали коротенькую, но интересную задачу. Верно ответили 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() и другие.
Понимание работы байтовых строк особенно полезно при веб-разработке, поскольку все данные пересылаемые через интернет - являются набором байт. Данные кодируются в байты, пересылаются, затем декодируются, согласно требуемому формату данных.