Курс 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. Работа с буфером обмена на Python
  3. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  4. Функции классификации комплексных чисел
  5. Метод ne для сравнения объектов
  6. Конвертация изображений в PDF
  7. Создание даты из строки ISO
  8. Пустой оператор pass в Python
  9. Копирование объектов в Python
  10. Функции высшего порядка в Python
  11. PrettyTable: создание таблицы
  12. Проверка дубликатов в Python
  13. Отслеживание выполнения программы с библиотекой tqdm
  14. Генераторы списков
  15. Работа с deque в Python
  16. Обработка исключений в Python 3
  17. Изменение объектов в Python
  18. Метод classmethod
  19. Хранение данных с помощью dataclasses
  20. Взаимодействие с sys
  21. Сравнение объектов в Python
  22. Тип CodeType в Python.
  23. Списки: объединение, изменение
  24. Функции с дополнением
  25. Просмотр файла в Jupyter Noteboo
  26. Обновление шаблона base.html
  27. Возврат нескольких значений из функции
  28. Сложение матриц в NumPy
  29. Удаление элемента из списка
  30. Оператор is в Python
  31. Перевод эмодзи и эмотиконов.
  32. Передача аргументов через **arguments
  33. Retrying в Python: повторные вызовы
  34. Основные методы NumPy
  35. Оптимизация памяти с __slots__
  36. Создание циклической ссылки
  37. Проектирование Singleton с метаклассом
  38. Непрерывная проверка в Python
  39. Работа с enumerate()
  40. Избегайте использования goto
  41. Декораторы для регистрации функций
  42. Переопределение метода __and__
  43. Работа с набором данных CIFAR10 в PyTorch
  44. Объединение строк с помощью метода join
  45. Разделение строк в Python
  46. Работа с Enum в Python3.
  47. Декоратор Ajax required
  48. Разница между датами

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