ParcoursOuvrir l'appli

Des paramètres plus souples

Python, les fonctions · 40 min

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