Nombre variable d'arguments

Nous avons déjà vu certaines fonctions qui acceptent un nombre variable d'arguments comme print() ou zip(). Pourtant, nous n'en avons pas encore créé nous-mêmes. Comment écrire une fonction qui peut gérer un nombre variable d'arguments ?
Lorsque nous imprimons des éléments, nous pouvons appeler la fonction print() avec autant d'arguments que nous le souhaitons, et elle les imprimera tous :
print('Hi')                   # Hi
print('Hi', 'how', 'are', 1)  # Hi how are 1
print(1, 2, 3, 8)             # 1 2 3 8
Si nous regardons la signature de la fonction print() dans la documentation officielle de Python, le premier argument capture en fait la liste complète des arguments (non nommés) qui lui sont passés. Il en va de même pour la fonction zip :
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
zip(*iterables, strict=False)
Source: https://docs.python.org/3/library/functions.html
Nous pouvons définir nos propres fonctions qui acceptent un nombre variable d'arguments en utilisant un astérisque * :
def income(*purchases):
    total = 0
    for purchase in purchases:
        total += purchase
    return total

print(income(1, 2, 3, 4, 10))  # 20
Ici, nous pouvons traiter purchases comme une liste de nombres. Nous pouvons accéder à sa longueur avec len(), nous pouvons parcourir les éléments avec une boucle for, etc.

Défi

Implémentez une fonction num_args() qui renvoie le nombre d'arguments qui lui sont passés.
Exemples d'appels à la fonction :
def num_args(*args):
    ...

print(num_args(1, 2, 3))  # 3
print(num_args())         # 0
print(num_args('Anna'))   # 1
 
Astuce pro 😎 : Il est aussi possible de transformer une liste simple en *args :
a = [1, 2, 3, 'hello']
print(*a)

# Ceci équivaut à
print(1, 2, 3, 'hello')
Maintenant, vous savez comment imprimer facilement des listes.
 

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