Распаковка словарей
Почему *kwargs
получаем ключи, а **kwargs
не получаем кортежи (key, val)
и функция понимает- это как аргументы ?
Источник: Stack Overflow на русском
Почему *kwargs
получаем ключи, а **kwargs
не получаем кортежи (key, val)
и функция понимает- это как аргументы ?
Дополню всё же, что ну просто так задумано.
*
- итерирует объект, к которому она применяется, и отдаёт результат, при этом итерирование словаря, как известно, даёт в результате именно его ключи
**
- даёт пары ключ=значение
, и это удобно во многих случаях, в частности для передачи аргументов в функцию через словарь
*
и **
это разные операторы и поэтому работают по-разному. Так задумали авторы языка.
Кортежи (ключ, значение) можно получить dct.items()
и распаковать их одной звёздочкой если нужно.