Назад к вопросам
Junior
65
questionbank

Зачем используются *args и **kwargs в Python?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

*args и **kwargs позволяют передавать в функцию переменное количество аргументов.

  • *args (произвольный набор позиционных аргументов): собирает все неименованные аргументы в кортеж.
  • **kwargs (произвольный набор именованных аргументов): собирает все именованные аргументы в словарь.

Применение:

  1. Функции с переменным числом параметров: Когда заранее неизвестно, сколько аргументов будет передано.
  2. Декораторы: Для универсального обертывания функций с различными сигнатурами.
  3. Перенаправление вызовов: Когда одна функция вызывает другую, передавая ей полученные аргументы.
# Пример использования *args
def sum_all(*args):
    total = 0
    for num in args:
        total += num
    return total

# Пример использования **kwargs
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

# Пример совместного использования
def process_data(name, *args, **kwargs):
    print(f"Processing: {name}")
    print(f"Args: {args}")       # Кортеж (10, 20)
    print(f"Kwargs: {kwargs}")     # Словарь {'city': 'London', 'zip': 'SW1A 0AA'}

# Вызовы функций
print(sum_all(1, 2, 3, 4))             # 10
print_info(name="Alice", age=30, city="New York") # Вывод информации по ключам и значениям
process_data("Report", 10, 20, city="London", zip="SW1A 0AA")