Comment utiliser les *args en Python ?
Le paramètre args
permet de créer une fonction qui accepte un nombre indéfini d'arguments.
Dans la définition d'une fonction, il doit être précédé de l'opérateur 'splat' (*) :
def foo(*args):
print(args)
La fonction foo
accepte ainsi 0, 1 ou un nombre infini d'arguments, par exemple :
def foo(*args):
print(args)
foo()
foo(1)
foo(1, 'Bonjour', True)
À l'intérieur de la fonction, les arguments envoyés au paramètre args
seront récupérés sous la forme d'un tuple :
def foo(*args):
print(args)
print(isinstance(args, tuple))
foo(1, 2, 3)
Il est important de soulever que le nom de args
n'est qu'une convention. On pourrait utiliser n'importe quel nom et cela fonctionnerait de la même façon.
👉 La seule chose qui compte vraiment, c'est l'opérateur splat (*
) qui précède le nom du paramètre :
def foo(*nombres):
print(nombres)
foo(1, 2, 3, 4)
Exemples de code
Faire la somme de plusieurs nombres :
def somme_de_nombres(*args):
somme = 0
for n in args:
somme += n
return somme
print(somme_de_nombres(1, 2, 3))
print(somme_de_nombres(2, 5, 3, 9, 8))
print(somme_de_nombres(4, 5, 2, 19, 39, 23, 3, 12, 99))
Concaténer des chaînes de caractères :
def concat_path(*args):
path = ""
for chemin in args:
path += "/" + chemin
return path
print(concat_path("Users", "ThibH", "Documents"))
print(concat_path("Users", "ThibH", "Documents", "DossierTest"))
print(concat_path("Users", "ThibH", "Documents", "DossierTest", "SousDossier"))
Enlever plusieurs éléments d'une liste :
def remove_employes(liste, *args):
for employe in args:
while employe in liste:
liste.remove(employe)
return liste
employes_origine = ["Patrick", "Julie", "Simon", "Paul", "Pauline"]
employes_final = remove_employes(employes_origine, "Patrick", "Paul")
print(employes_final)