Переменное количество аргументов

Мы уже видели некоторые функции, которые принимают переменное количество аргументов, такие как 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:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
zip(*iterables, strict=False)
Source: https://docs.python.org/3/library/functions.html
Мы можем определить свои функции, которые принимают переменное количество аргументов с помощью звёздочки *:
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(), которая будет возвращать количество переданных ей аргументов.
Примеры вызова функции:
def num_args(*args):
    ...

print(num_args(1, 2, 3))  # 3
print(num_args())         # 0
print(num_args('Anna'))   # 1
 
Полезный совет 😎: Можно также преобразовать простой список в *args:
a = [1, 2, 3, 'hello']
print(*a)

# This is equivalent to
print(1, 2, 3, 'hello')
Теперь вы знаете, как легко выводить списки.
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue