Распаковка словарей

Рейтинг: 0Ответов: 2Опубликовано: 10.01.2023

Почему *kwargs получаем ключи, а **kwargs не получаем кортежи (key, val)и функция понимает- это как аргументы ?

Ответы

▲ 1Принят

Дополню всё же, что ну просто так задумано.

* - итерирует объект, к которому она применяется, и отдаёт результат, при этом итерирование словаря, как известно, даёт в результате именно его ключи

** - даёт пары ключ=значение, и это удобно во многих случаях, в частности для передачи аргументов в функцию через словарь

▲ 2

* и ** это разные операторы и поэтому работают по-разному. Так задумали авторы языка.

Кортежи (ключ, значение) можно получить dct.items() и распаковать их одной звёздочкой если нужно.