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