Что такое *args, **kwargs?

*args и **kwargs - это специальные параметры функции в Python, которые позволяют обрабатывать переменное количество аргументов.

  1. *args (аргументы переменной длины):

    • Описание: *args используется для передачи переменного количества позиционных аргументов в функцию. args - это кортеж, который содержит все переданные аргументы, кроме тех, которые были присвоены явно.

    • Пример:

      def print_args(*args):
          for arg in args:
              print(arg)
      
      print_args(1, 2, 3, "four")
  2. **kwargs (аргументы переменной длины с ключевыми словами):

    • Описание: **kwargs используется для передачи переменного количества аргументов с ключевыми словами в функцию. kwargs - это словарь, который содержит все переданные аргументы с их значениями.

    • Пример:

      def print_kwargs(**kwargs):
          for key, value in kwargs.items():
              print(f"{key}: {value}")
      
      print_kwargs(name="John", age=30, city="New York")
  3. Комбинированное использование:

    • Описание: Можно использовать *args и **kwargs вместе для создания функции, которая принимает любое количество позиционных и именованных аргументов.

    • Пример:

      def print_all_args(*args, **kwargs):
          for arg in args:
              print(arg)
          for key, value in kwargs.items():
              print(f"{key}: {value}")
      
      print_all_args(1, 2, name="John", age=30)

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

def example_function(*args, **kwargs):
    for arg in args:
        print(arg)
    for key, value in kwargs.items():
        print(f"{key}: {value}")

# Пример использования
values = [1, 2, 3]
options = {"name": "John", "age": 30}

example_function(*values, **options)

В этом примере:

  • *values распаковывает элементы из списка values и передает их как позиционные аргументы в функцию.

  • **options распаковывает элементы из словаря options и передает их как именованные аргументы (ключи и значения) в функцию.

Таким образом, функция example_function может принимать любое количество позиционных и именованных аргументов, что делает ее более гибкой для различных сценариев использования.

Last updated