Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Les fonctions en Python

Après cette leçon: Je peux écrire une fonction qui reçoit des valeurs et rend un résultat.

Leçon de 60 min6 commandesLab Linux du quotidien : la trentaine de commandes que les ingénieurs tapent de tête

Calculer une année bissextile sans se tromper

Une fonction Python est un petit programme qui porte un nom, reçoit des valeurs et rend un résultat. On l’écrit une fois avec def, puis on l’appelle autant de fois qu’on veut.

Les fonctions évitent de recopier le même calcul vingt fois. Elles découpent aussi un gros programme en morceaux que l’on peut tester un à un.

À la fin de cette leçon

Remarque

Je peux écrire une fonction qui reçoit des valeurs et rend un résultat.

Mots-clés

MotCe que ça veut direExemple
Fonctionun bloc de lignes qui porte un nomprix_tickets
Paramètreun nom pour une valeur que la fonction reçoit
Argumentla valeur donnée à la fonction quand on l’appelle3
returnle mot qui rend un résultat et termine la fonction
Portéel’endroit du programme où une variable existe

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

def crée une fonction, return rend son résultat

Écrivez def, le nom de la fonction, les paramètres entre parenthèses, puis deux-points. Le bloc décalé en dessous est le corps de la fonction.

Le mot return rend la valeur à celui qui a appelé la fonction, et la fonction s’arrête là. Sans return, la fonction rend None, c’est-à-dire rien.

Une fonction qui calcule un prix

Code: python
# Une fonction qui calcule le prix d'un nombre de tickets.
def prix_tickets(nombre, prix_unitaire):
    total = nombre * prix_unitaire
    return total

print(prix_tickets(3, 2))
print(prix_tickets(10, 2))
# Appelez la fonction avec 4 tickets à 3 euros.

Exemple travaillé : l’appel prix_tickets(3, 2)

Étapenombreprix_unitairetotalCe qui se passe
Appel avec 3 et 232·Les arguments entrent dans les paramètres
total = nombre * prix_unitaire326Le calcul est fait
return total326La valeur 6 sort, la fonction finit
print(...)···Le programme affiche 6

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Écrire le fichier carre.py

Commande
printf 'def carre(x):\n    return x * x\n\nprint(carre(7))\n' > carre.py

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Appeler la fonction carre avec 7

Commande
python3 carre.py

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Erreur fréquente

Attention

Beaucoup pensent que print et return font la même chose. print écrit à l’écran, mais la fonction ne rend rien. return donne une valeur que le reste du programme peut utiliser. Pour calculer, utilisez return.

Une variable de fonction n’existe que dedans

Une variable créée dans une fonction est locale : elle disparaît quand la fonction finit. Ce lieu où elle existe s’appelle sa portée.

Pour utiliser une valeur à l’extérieur, rendez-la avec return, puis rangez-la dans une variable. Les paramètres sont eux aussi locaux.

Rendre une valeur pour l’utiliser dehors

Code: python
# total existe seulement dans la fonction.
def doubler(valeur):
    total = valeur * 2
    return total

resultat = doubler(21)
print(resultat)
# Ajoutez print(total) tout en bas : que dit Python ?

Écrire le fichier portee.py

Commande
printf 'def f():\n    z = 5\n\nf()\nprint(z)\n' > portee.py

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lancer le programme qui échoue

Commande
python3 portee.py

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Un petit test vérifie une fonction

Avant de faire confiance à une fonction, testez-la sur des cas dont vous connaissez la réponse. assert dit « ceci doit être vrai ». Si c’est faux, Python s’arrête avec une erreur.

Prenez au moins un cas ordinaire et un cas limite. Pour une année bissextile : 2024, 1900 et 2000. Les années de siècle sont les pièges.

Tester une fonction avec assert

Code: python
# Un petit test : assert ne dit rien si tout va bien.
def est_pair(nombre):
    return nombre % 2 == 0

assert est_pair(4)
assert not est_pair(7)
print("Les tests passent")
# Changez le deuxième assert en assert est_pair(7) : que se passe-t-il ?

Exemple travaillé : la règle de l’année bissextile

AnnéeDivisible par 4 ?Divisible par 100 ?Divisible par 400 ?Bissextile ?
2023nonnonnonnon
2024ouinonnonoui
1900ouiouinonnon
2000ouiouiouioui

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Écrire un test dans verif.py

Commande
printf 'def est_pair(n):\n    return n % 2 == 0\n\nassert est_pair(4)\nassert not est_pair(7)\nprint("ok")\n' > verif.py

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lancer les tests

Commande
python3 verif.py

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Pour aller plus loin

Écrivez une fonction ttc(prix_ht) qui ajoute 20 % de TVA. Réfléchissez : calculez-vous prix_ht * 1.2 ou prix_ht + prix_ht * 20 / 100 ?

Écrivez trois assert avec des prix dont vous connaissez la réponse, comme 100 et 50. Lancez-les.

À propos de ce labo et de sa source: Lab Linux du quotidien : la trentaine de commandes que les ingénieurs tapent de tête

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.