Будет напечатано 1, затем []. Обязательный first получает единственный элемент, а звёздочная переменная rest собирает оставшиеся значения, которых здесь нет.
Деконструкция списка, содержащего единственный элемент
Будет напечатано 1, затем []. Обязательный first получает единственный элемент, а звёздочная переменная rest собирает оставшиеся значения, которых здесь нет.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Что будет напечатано в консоль после выполнения следующего кода?
first, *rest = [1]
print(first)
print(rest)
Ответ
Будет напечатано 1, затем []. Обязательный first получает единственный элемент, а звёздочная переменная rest собирает оставшиеся значения, которых здесь нет.
Расширенная распаковка допускает пустой остаток:
1
[]
rest всегда создаётся как список, даже если исходной последовательностью был кортеж. Ошибки не возникает, потому что для единственной обязательной переменной элемент имеется. Для first, *rest = [] возник бы ValueError. Звёздочка не означает обязательное наличие хотя бы одного дополнительного элемента.