Курс Python → *args и **kwargs в Python

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


def sum_all(*args):
    total = 0
    for num in args:
        total += num
    return total

print(sum_all(1, 2, 3, 4, 5))  # Выведет 15

Параметр **kwargs, с другой стороны, позволяет функции принимать любое количество именованных аргументов в виде словаря. Это особенно удобно, когда у нас есть функция с большим количеством параметров, и мы хотим передавать их в более удобной форме. Например, мы можем использовать **kwargs для передачи именованных параметров в функцию, которая выводит информацию о пользователе:


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

print_user_info(name="Alice", age=30, city="New York")
# Выведет:
# name: Alice
# age: 30
# city: New York

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


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

example_func(1, 2, 3, name="Bob", age=25)
# Выведет:
# Positional arg: 1
# Positional arg: 2
# Positional arg: 3
# Keyword arg - name: Bob
# Keyword arg - age: 25

Использование *args и **kwargs делает код более читаемым, гибким и позволяет уменьшить количество повторяющегося кода. Они позволяют улучшить структуру функций, делая их более универсальными и легкими в поддержке. Поэтому знание и умение использовать *args и **kwargs является важным навыком для любого разработчика Python.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Поиск индексов в списке
  2. Метод eq для сравнения объектов
  3. Добавление цвета в консоли
  4. Метод count в Python: почему count(», ») возвращает 4?
  5. Python: отсутствие точек с запятыми
  6. Переопределение метода delitem в Python
  7. Работа с классами данных
  8. Изменение IP-адреса в Python
  9. Проверка вхождения подстроки
  10. Итерация по итерируемым объектам
  11. Метод join() для объединения строк
  12. Создание графики с черепахой
  13. Генераторы в Python
  14. Метод __irshift__ для побитового сдвига вправо
  15. Использование defaultdict в Python
  16. JMESPath в Python
  17. Функция zip() в Python
  18. Оператор break в Python
  19. Форматирование строк в Python
  20. Получение текущей даты в Python
  21. Множественные конструкторы в Python
  22. Метод classmethod
  23. PATCH-запрос с библиотекой requests
  24. Использование super() в Python
  25. Beautiful Soup — извлечение данных из HTML
  26. Метод Enumerate() для списков
  27. Избегайте ошибку FileNotFoundError
  28. Работа с модулем random
  29. Структурирование данных с Pydantic
  30. Передача словаря через **kwargs
  31. Поиск уникальных и повторяющихся элементов
  32. Форматирование строк в Python
  33. Копирование объектов в Python
  34. Логирование с Loguru
  35. Работа с deque в Python
  36. Функции all() и any() в Python
  37. Работа с timedelta в Python
  38. Фильтрация списка от «ложных» значений
  39. Генераторы списков в Python
  40. Избегайте изменяемых аргументов
  41. Работа с датами в Python
  42. Векторизация в Python с NumPy.
  43. Удаление falsy-значений из списка с помощью filter
  44. Метод setitem в Python
  45. Сортировка с параметром key
  46. Переопределение метода sub
  47. Класс-оболочка для словарей

Marketello читают маркетологи из крутых компаний