Функции с неопределённым количеством параметров

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

Неопределённое количество позиционных аргументов (*args)

Позиционные аргументы передаются в функцию как обычный список (или кортеж). Для этого используется специальный синтаксис *args, где args – это имя переменной, которая будет содержать все переданные значения.

Пример:

def sum_numbers(*numbers):
    total = 0
    for number in numbers:
        total += number
    return total

print(sum_numbers(1, 2, 3))   # Вывод: 6
print(sum_numbers(10, 20, 30, 40))  # Вывод: 100

Здесь функция sum_numbers принимает любое количество чисел и складывает их вместе. Аргумент *numbers собирает все переданные числа в одну последовательность.

Неопределённое количество именованных аргументов (**kwargs)

Именованные аргументы передаются в виде словаря (dict), используя синтаксис **kwargs. Здесь kwargs – это имя переменной, содержащей словарь всех переданных именованных аргументов.

Пример:

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

print_user_info(name="Иван", age=25, city="Москва")
# Вывод:
# name: Иван
# age: 25
# city: Москва

Функция print_user_info выводит информацию о пользователе, принимая любые именованные параметры. Например, можно передать имя пользователя, его возраст и город проживания.

Комбинирование *args и **kwargs

Можно комбинировать оба типа аргументов в одной функции. Обычно *args ставится перед **kwargs.

Пример:

def calculate_and_print(a, b, *args, option=True, **kwargs):
    result = a + b
    for arg in args:
        result += arg
    
    if option:
        print("Результат:", result)
    
    for key, value in kwargs.items():
        print(f"Дополнительная информация: {key} = {value}")

calculate_and_print(5, 7, 8, 9, option=False, unit="см", color="синий")
# Вывод:
# Дополнительная информация: unit = см
# Дополнительная информация: color = синий

В этом примере функция сначала складывает два обязательных параметра a и b, затем добавляет к результату все дополнительные числовые аргументы из *args. Если параметр option равен True, то выводится результат вычислений. Также функция может получать дополнительные именованные параметры через **kwargs и выводить их.

Заключение

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

Источник: https://stepik.org/lesson/1583926/step/1?unit=1605282

Было ли это полезно?

0 / 0