9 Использование ** kwargs при написании функций

Вы можете определить функцию , которая принимает произвольное количество ключевых слов (называемые) аргументов, используя двойную звезду ** перед именем параметра:

 def print_kwargs(**kwargs):
    print(kwargs)

 

При вызове метода Python создаст словарь всех аргументов ключевого слова и сделает его доступным в теле функции:

 print_kwargs(a="two", b=3)
# prints: "{a: "two", b=3}"

 

Обратите внимание, что параметр ** kwargs в определении функции всегда должен быть последним параметром, и он будет соответствовать только аргументам, переданным после предыдущих.

 def example(a, **kw):
    print kw

example(a=2, b=3, c=4) # => {'b': 3, 'c': 4}

 

Внутри тела функции, kwargs манипулируют таким же образом , как словарь; для того , чтобы получить доступ к отдельным элементам в kwargs вы просто цикл через них , как вы бы с нормальным словарем:

 def print_kwargs(**kwargs):
    for key in kwargs:
        print("key = {0}, value = {1}".format(key, kwargs[key])) 

 

Теперь, вызывая print_kwargs(a="two", b=1) показывает следующий вывод:

 print_kwargs(a = "two", b = 1)
key = a, value = "two"
key = b, value = 1