Курс 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. Метод difference_update() — разность множеств
  2. Разница между датами
  3. Удаление дубликатов из списка
  4. Сериализация объектов в Python
  5. Установка Git и AWS CLI
  6. Класс Counter() для подсчета элементов
  7. Поиск самого частого элемента
  8. Отладка производительности Python
  9. Разделение строки на подстроки в Python
  10. Создание множества в Python
  11. Преобразование данных в Python
  12. Работа с NumPy
  13. Генерация чисел с range()
  14. Оператор умножения для вектора
  15. Создание вложенного генератора
  16. Работа с YAML в Python
  17. Метод join для объединения строк
  18. Установка и использование модуля Wikipedia
  19. Оператор деления для класса Rational
  20. Логические значения в Python
  21. Генерация UUID в Python
  22. Динамическая типизация в Python
  23. Расчет времени выполнения
  24. Решатель судоку на Python с pygame
  25. Простой калькулятор Python
  26. Работа с очередями в Python
  27. Нахождение разницы между списками в Python
  28. Работа с Requests для HTTP-запросов
  29. Печать календаря в Python
  30. Работа с f-строками 2.0
  31. Добавление элемента к кортежу
  32. Очистка списка от False, None, 0, «»
  33. Метод classmethod
  34. Сглаживание списка
  35. Python Менеджер контекста
  36. Область видимости переменных
  37. Поиск элементов BeautifulSoup
  38. Функция eval() в Python
  39. Выборка чисел
  40. Обновление ключей в Python
  41. Принципы программирования
  42. Анонимные функции в Python
  43. Динамические маршруты во Flask
  44. Создание и инициализация объектов
  45. None в Python: использование и особенности
  46. Сортировка в Python
  47. Отображение HTML кода в Python

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