Этот вопрос проверяет знание механизма передачи переменного количества именованных (ключевых) аргументов в функцию.
**kwargs позволяет передавать в функцию переменное количество именованных аргументов. Эти аргументы собираются в словарь, и с ними можно работать внутри функции, как с обычным словарем.
**kwargs используется для передачи произвольного количества именованных аргументов в функцию. Это удобно, когда заранее неизвестно, какие параметры могут быть переданы.
Пример:
def print_kwargs(**kwargs):
for key, value in kwargs.items():
print(f"{key} = {value}")
print_kwargs(name="Alice", age=25, city="London")
# Вывод:
# name = Alice
# age = 25
# city = London
Особенности **kwargs:
Аргументы передаются в виде словаря.
Имя переменной может быть любым, но стандартное соглашение — использовать kwargs.
Можно комбинировать с обычными аргументами и *args.
Пример:
def mixed_args(a, b, *args, **kwargs):
print(f"a: {a}, b: {b}")
print(f"Positional args: {args}")
print(f"Keyword args: {kwargs}")
mixed_args(1, 2, 3, 4, name="Alice", age=30)
# Вывод:
# a: 1, b: 2
# Positional args: (3, 4)
# Keyword args: {'name': 'Alice', 'age': 30}
Когда использовать:
Для функций с динамическим набором параметров. Например, в конфигурациях или API.