Python - Arguments Arbitraires ou de Longueur Variable

Bonjour à tous, futurs sorciers Python !aujourd'hui, nous allons entamer un voyage passionnant dans le monde des arguments arbitraires en Python. Ne vous inquiétez pas si vous êtes nouveau dans la programmation ; je serai votre guide amical et nous explorerons ce concept étape par étape. Alors, prenez vos baguettes virtuelles (claviers), et plongeons-y !

Python - Arbitrary Arguments

Arguments Arbitraires (*args)

Imaginez que vous planifiez une fête, mais vous ne savez pas combien d'amis viendront. Vous voulez être préparé pour n'importe quel nombre de invités. C'est exactement ce que font les arguments arbitraires dans les fonctions Python – ils vous permettent de gérer un nombre inconnu d'arguments !

En Python, nous utilisons *args pour indiquer les arguments arbitraires. L'astérisque (*) est le symbole magique ici, et args est simplement une convention (vous pourriez utiliser n'importe quel nom, mais args est largement utilisé et reconnu).

Regardons un exemple simple :

def saluer_amis(*args):
for ami in args:
print(f"Bonjour, {ami} !")

saluer_amis("Alice", "Bob", "Charlie")

Dans cet exemple, saluer_amis() peut accepter n'importe quel nombre d'arguments. Lorsque nous exécutons ce code, il produira :

Bonjour, Alice !
Bonjour, Bob !
Bonjour, Charlie !

Mais que se passe-t-il si nous avions plus d'amis ? Pas de problème ! Nous pourrions facilement ajouter plus de noms :

saluer_amis("Alice", "Bob", "Charlie", "David", "Eve")

Et notre fonction les saluerait tous avec joie !

Comment *args Fonctionne

Lorsque vous utilisez *args dans la définition d'une fonction, Python range tous les arguments dans un tuple. Vous pouvez ensuite itérer sur ce tuple à l'intérieur de votre fonction. C'est comme avoir un sac magique qui peut contenir n'importe quel nombre d'articles !

Exemple d'Arguments Arbitraires

Créons un exemple plus pratique. Supposons que nous voulons calculer la moyenne d'un nombre variable de scores :

def calculer_moyenne(*args):
if len(args) == 0:
return 0
total = sum(args)
moyenne = total / len(args)
return moyenne

print(calculer_moyenne(85, 90, 78))
print(calculer_moyenne(92, 88, 95, 78, 80))

Ce qui donnera en sortie :

84.33333333333333
86.6

Notre fonction calculer_moyenne() peut gérer n'importe quel nombre de scores. Elle calcule la somme en utilisant la fonction intégrée sum(), puis divise par le nombre de scores pour obtenir la moyenne.

Arguments Requis Avec Arguments Arbitraires

Parfois, vous pourriez vouloir avoir certains arguments requis avec des arguments arbitraires. Pas de souci ! Python est là pour vous. Vous pouvez mélanger des paramètres réguliers avec *args. Juste souvenez-vous de mettre *args à la fin :

def presenter_classe(enseignant, *etudiants):
print(f"Bonjour, je suis {enseignant}, et je serai votre enseignant.")
print("Présentons les étudiants :")
for etudiant in etudiants:
print(f"- {etudiant}")

presenter_classe("M. Johnson", "Alice", "Bob", "Charlie")

Ce qui donnera en sortie :

Bonjour, je suis M. Johnson, et je serai votre enseignant.
Présentons les étudiants :
- Alice
- Bob
- Charlie

Dans cet exemple, enseignant est un argument requis, tandis que *etudiants peut accepter n'importe quel nombre de noms d'étudiants.

Arguments de Mot-clé Arbitraires (**kwargs)

Maintenant, augmentons la difficulté ! Et si nous voulions passer des paires clé-valeur comme arguments ? Entrez **kwargs (arguments de mot-clé) ! C'est comme *args, mais pour des arguments nommés.

Voici un exemple simple :

def imprimer_info_utilisateur(**kwargs):
for cle, valeur in kwargs.items():
print(f"{cle} : {valeur}")

imprimer_info_utilisateur(nom="Alice", age=25, ville="New York")

Ce qui donnera en sortie :

nom : Alice
age : 25
ville : New York

Dans ce cas, **kwargs crée un dictionnaire où les clés sont les noms des arguments et les valeurs sont les valeurs des arguments.

Arguments Multiples Avec Arguments de Mot-clé Arbitraires

Vous pouvez combiner des arguments réguliers, *args, et **kwargs dans une seule fonction. Juste souvenez-vous de l'ordre : arguments réguliers d'abord, puis *args, et enfin **kwargs.

Voici un exemple qui les rassemble tous :

def info_etudiant(école, *args, **kwargs):
print(f"École : {école}")
print("Matières :")
for matière in args:
print(f"- {matière}")
print("Informations Supplémentaires :")
for cle, valeur in kwargs.items():
print(f"{cle} : {valeur}")

info_etudiant("Python High", "Math", "Science", "Histoire", nom="Alice", age=16, classe="10e")

Ce qui donnera en sortie :

École : Python High
Matières :
- Math
- Science
- Histoire
Informations Supplémentaires :
nom : Alice
age : 16
classe : 10e

Résumé des Méthodes

Voici un tableau résumant les méthodes que nous avons discutées :

Méthode Syntaxe Description
Arguments Arbitraires *args Permet à une fonction d'accepter n'importe quel nombre d'arguments positionnels
Arguments de Mot-clé Arbitraires **kwargs Permet à une fonction d'accepter n'importe quel nombre d'arguments de mot-clé
Utilisation Combinée def func(regular_args, *args, **kwargs) Combine des arguments réguliers avec les deux types d'arguments arbitraires

N'oubliez pas, la puissance des arguments arbitraires réside dans leur flexibilité. Ils vous permettent de créer des fonctions plus polyvalentes qui peuvent s'adapter à différentes situations.

À mesure que nous terminons ce voyage magique à travers les arguments arbitraires, j'espère que vous vous sentez plus confiants en utilisant ces outils puissants dans vos sorts Python... Je veux dire, scripts ! Pratiquez l'utilisation de *args et **kwargs dans vos propres fonctions, et bientôt vous créerez des codes Python avec la souplesse d'un sorcier chevronné. Bon codage, et que vos fonctions soient toujours flexibles !

Credits: Image by storyset