Número variável de argumentos

Já vimos algumas funções que aceitam um número variável de argumentos como print() ou zip(). No entanto, ainda não criamos uma nós mesmos. Como escrever uma função que possa lidar com um número variável de argumentos?
Ao imprimir elementos, podemos chamar a função print() com quantos argumentos quisermos e ela imprimirá todos eles:
print('Hi')                   # Hi
print('Hi', 'how', 'are', 1)  # Hi how are 1
print(1, 2, 3, 8)             # 1 2 3 8
Se olharmos para a assinatura da função print() na documentação oficial do Python, o primeiro argumento na verdade captura toda a lista de argumentos (não nomeados) passados para ela. O mesmo vale para a função zip:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
zip(*iterables, strict=False)
Source: https://docs.python.org/3/library/functions.html
Podemos definir nossas próprias funções que aceitam um número variável de argumentos com um asterisco *:
def income(*purchases):
    total = 0
    for purchase in purchases:
        total += purchase
    return total

print(income(1, 2, 3, 4, 10))  # 20
Aqui podemos tratar purchases como uma lista de números. Podemos acessar seu comprimento com len(), podemos iterar sobre os elementos com um loop for, etc.

Desafio

Implemente uma função num_args() que retorne o número de argumentos passados para ela.
Exemplos de chamadas à função:
def num_args(*args):
    ...

print(num_args(1, 2, 3))  # 3
print(num_args())         # 0
print(num_args('Anna'))   # 1
 
Dica profissional 😎: Também é possível transformar uma lista simples em *args:
a = [1, 2, 3, 'hello']
print(*a)

# This is equivalent to
print(1, 2, 3, 'hello')
Agora você sabe como imprimir listas facilmente.
 

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