1) Если ты напишешь print_scores(arg1, arg2, ..., argN, *scores), предполагается, что у тебя N аргументов обязательные, а остальные опциональные, и эти остальные соберутся в отдельный кортеж. То есть конструкция func(arg, *args1, *args2) невозможна, потому что непонятно, как поделить остальные переменные между args1 и args2. Если тебе хочется получить два списка аргументов, лучше явно запихни их в списки (fun(arg1=(1, 2, 3), arg2=(4, 5, 6)))
Писать *a = [1, 2, 3] нельзя, потому что * это операция распаковки, а не обращение к указателю как в C++. Даже если предположить, что такая конструкция имела бы место, это было бы сильно не pythonic way, потому что гораздо проще и понятнее то, что ты написал: a = [[1, 2, 3]].
2) Двойная звёздочка это не двойная распаковка. Это сборка именованных параметров в словарь и наоборот. Одинарная звёздочка на словарь вернёт тебе список ключей. Например,
напечатает на экране: kek, lol, cheburek. Логика «двойной оператор это то же самое, что два одинарных» не работает, потому что есть же разница между = и ==.
UPD: Коллега ниже отметил, что звезда собирает аргументы в кортеж, исправил оговорку.
Информация
В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
1) Если ты напишешь
print_scores(arg1, arg2, ..., argN, *scores), предполагается, что у тебя N аргументов обязательные, а остальные опциональные, и эти остальные соберутся в отдельный кортеж. То есть конструкцияfunc(arg, *args1, *args2)невозможна, потому что непонятно, как поделить остальные переменные междуargs1иargs2. Если тебе хочется получить два списка аргументов, лучше явно запихни их в списки (fun(arg1=(1, 2, 3), arg2=(4, 5, 6)))Писать
*a = [1, 2, 3]нельзя, потому что * это операция распаковки, а не обращение к указателю как в C++. Даже если предположить, что такая конструкция имела бы место, это было бы сильно не pythonic way, потому что гораздо проще и понятнее то, что ты написал:a = [[1, 2, 3]].2) Двойная звёздочка это не двойная распаковка. Это сборка именованных параметров в словарь и наоборот. Одинарная звёздочка на словарь вернёт тебе список ключей. Например,
напечатает на экране:
kek, lol, cheburek. Логика «двойной оператор это то же самое, что два одинарных» не работает, потому что есть же разница между=и==.UPD: Коллега ниже отметил, что звезда собирает аргументы в кортеж, исправил оговорку.