Des paramètres plus souples
Les valeurs par défaut
Souvent, un paramètre a presque toujours la même valeur. Par exemple, le taux de TVA vaut presque toujours 19,25 %, mais certains produits ont un autre taux.
def prix_ttc(prix_ht, taux=0.1925):
return round(prix_ht * (1 + taux))
prix_ttc(1000) # taux vaut 0.1925 par défaut : 1192
prix_ttc(1000, 0.05) # taux vaut 0.05 : 1050
Les paramètres avec valeur par défaut sont facultatifs à l'appel. Ils doivent être placés après les paramètres obligatoires dans la définition.
Tu en utilises déjà sans le savoir : round(3.14159) utilise un nombre de chiffres par défaut (0), et round(3.14159, 2) le précise. Pareil pour sep et end dans print.
Les arguments nommés
Quand une fonction a beaucoup de paramètres, on se trompe facilement d'ordre. On peut alors nommer les arguments à l'appel :
def reserver(nom, jour, places=1, vip=False):
...
reserver("Awa", "samedi", vip=True)
reserver(jour="lundi", nom="Boris", places=3)
Comparer ces deux appels :
reserver("Awa", "samedi", 1, True) # que veut dire True ?
reserver("Awa", "samedi", vip=True) # clair
Renvoyer plusieurs valeurs
Une fonction peut renvoyer plusieurs valeurs séparées par des virgules. On les récupère dans plusieurs variables :
def min_max(notes):
return min(notes), max(notes)
plus_basse, meilleure = min_max([12, 8, 15])
En réalité, Python renvoie un seul objet qui regroupe les deux valeurs, appelé un tuple (une sorte de liste qu'on ne peut pas modifier), puis le « déballe » dans les deux variables. Tu as déjà vu ce déballage avec a, b = b, a.
Exercice : La TVA par défaut
Définis prix_ttc(prix_ht, taux=0.1925) qui renvoie le prix TTC arrondi à l'entier, avec un taux de TVA par défaut de 19,25 %.
Voir une solution
def prix_ttc(prix_ht, taux=0.1925):
return round(prix_ht * (1 + taux))Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Le message de bienvenue
Définis bienvenue(prenom, langue="fr") qui renvoie :
"Bienvenue Awa"si la langue est"fr";"Welcome Awa"si la langue est"en";"Langue inconnue"pour toute autre langue.
Voir une solution
def bienvenue(prenom, langue="fr"):
if langue == "fr":
return f"Bienvenue {prenom}"
if langue == "en":
return f"Welcome {prenom}"
return "Langue inconnue"Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Les statistiques en une fonction
Définis statistiques(notes) qui renvoie trois valeurs : la moyenne arrondie à 2 chiffres, la plus basse et la plus haute.
Puis, en dehors de la fonction, récupère-les dans trois variables moy, basse, haute pour la liste [12, 8, 15, 9.5].
Voir une solution
def statistiques(notes):
moyenne = round(sum(notes) / len(notes), 2)
return moyenne, min(notes), max(notes)
moy, basse, haute = statistiques([12, 8, 15, 9.5])Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice