Курс 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. Создание комплексных чисел
  3. Хэш-функции и метод цепочек
  4. Возвращение нескольких значений через кортеж или класс
  5. Избегание изменяемых аргументов
  6. Обработка исключений в Python 3
  7. Метод lt для сортировки объектов
  8. Хранение переменных в Python.
  9. Модуль itertools: эффективная работа с итераторами
  10. Передача аргументов через **arguments
  11. Расчет времени выполнения
  12. Переопределение метода __floordiv__
  13. Переворот строки с помощью срезов
  14. Работа с модулем bisect
  15. Преобразование символов с помощью map
  16. Вложенные циклы в Python
  17. Метод join() для объединения строк
  18. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  19. Подписка на SelectelNews в Twitter
  20. Разделение строки в Python
  21. Python 3.12: переиспользование кавычек
  22. Progress с библиотекой tqdm
  23. Использование обратной косой черты в f-строках
  24. Поиск простых чисел
  25. Операция += для списков
  26. Конвертация текстовых чисел с помощью Numerizer
  27. Поиск кода
  28. Метод join() для объединения элементов строки
  29. Объединение словарей в Python
  30. Оптимизация методов в Python 3.7
  31. Распаковка элементов массива
  32. Блок else в циклах Python
  33. Генераторы в Python
  34. Делегирование в Python
  35. Явный импорт в Python
  36. Улучшенные подсказки для импорта в Python 3.12
  37. Контроль точности вывода чисел
  38. Значения по умолчанию в Python
  39. Описание скриптов в README
  40. Вывод символов строки в Python
  41. Определение локальных переменных в Python
  42. Операторы увеличения и уменьшения в Python
  43. Dict Comprehension в Python
  44. Аргументы *args и **kwargs
  45. Функция reversed() в Python
  46. Методы работы со строками в Python
  47. PrettyTable: создание таблицы
  48. Работа с CSV файлами в Python

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