Что произойдёт при использовании `*args`?

Использование `*args` в определении функции позволяет передавать переменное количество позиционных аргументов. Внутри функции `args` будет представлять собой кортеж (tuple) из этих аргументов. Это удобно, когда заранее неизвестно, сколько аргументов будет передано функции.

При использовании *args в определении функции в Python, это позволяет функции принимать произвольное количество позиционных аргументов.

Что конкретно происходит:

  • Сбор аргументов: Все переданные в функцию позиционные аргументы, которые не были явно указаны в сигнатуре функции (например, именованные аргументы), "собираются" в кортеж (tuple).
  • Имя кортежа: Этот кортеж передается в функцию как аргумент с именем, указанным после символа * (в данном случае, args). Можно использовать любое допустимое имя переменной, но args является общепринятым соглашением.
  • Доступ к аргументам: Внутри функции можно итерироваться по кортежу args, чтобы получить доступ к каждому переданному аргументу.

Пример:


def my_function(*args):
  print(f"Тип args: {type(args)}")
  print("Аргументы:")
  for arg in args:
    print(arg)

my_function(1, "hello", 3.14, True)
  

Вывод:


Тип args: <class 'tuple'>
Аргументы:
1
hello
3.14
True
  

Важно помнить:

  • *args должен быть указан после всех обязательных позиционных аргументов и перед любыми аргументами по умолчанию или аргументами **kwargs.
  • Функция может принимать как обязательные аргументы, так и *args. Например: def my_function(a, b, *args):

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

0