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 codeformat_paragraph
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)