Мы уже видели некоторые функции, которые принимают переменное количество аргументов, такие как print() или zip(). Однако, мы сами ещё не создавали такую функцию. Как написать функцию, которая может обрабатывать переменное количество аргументов?
При выводе элементов мы можем вызывать функцию print() с любым количеством аргументов, и она выведет их все:
print('Hi') # Hi
print('Hi', 'how', 'are', 1) # Hi how are 1
print(1, 2, 3, 8) # 1 2 3 8
Если мы посмотрим на сигнатуру функции print() в официальной документации по Python, то увидим, что первый аргумент фактически принимает весь список переданных ей (позиционных) аргументов. То же самое относится к функции zip:
Мы можем определить свои функции, которые принимают переменное количество аргументов с помощью звёздочки *:
def income(*purchases):
total = 0
for purchase in purchases:
total += purchase
return total
print(income(1, 2, 3, 4, 10)) # 20
Здесь мы можем рассматривать purchases как список чисел. Мы можем получить его длину с помощью len(), мы можем перебирать элементы с помощью цикла for и т.д.
Задача
Реализуйте функцию num_args(), которая будет возвращать количество переданных ей аргументов.