Что за звери *args и **kwargs
Views: 1
0
0
Немного поговорим о распаковке, звездочке *, позиционных и keyword аргументах, спецсимволах, а также о том как все это применять для args и kwargs
1) args и kwargs в параметрах функции - общепринятые имена, но можно использовать и другие
2) *позволяет распаковать iterable/sequence, а ** распакуют словарь
3) если нет никаких спецсимволов, то аргументы функции можно передавать как позиционно, так и keyword (то есть ключ=значение). Важно помнить, что позиционные всегда идут раньше keyword, при этом keyword аргументы между собой не обязаны хранить порядок.
4) спецсимвол / в параметрах функции говорит, что все, что ДО него должно передаваться как позиционные аргументы
5) спецсимвол * (без указания переменной), говорит о том что все, что ПОСЛЕ него должно передаваться как keyword аргумент
6) *args в параметрах функции соберет все позиционные аргументы в кортеж (tuple)
7) **kwargs в параметрах функции соберет все keyword аргументы в словарь (dict)
Почитать: