Numérique et sciences informatiques (NSI) · Première

Fonctions en Python : spécification et tests

Un programme bien écrit est découpé en fonctions courtes, chacune avec un rôle précis. Pour qu’une fonction soit utilisable par d’autres (ou par toi dans trois semaines), il faut dire ce qu’elle attend et ce qu’elle renvoie : c’est sa spécification. Il faut ensuite vérifier qu’elle fait bien ce qui est annoncé : ce sont les tests.

Une question sur ce cours ?

ULU, le tuteur d’ULUMINE, t’aide à partir de ce cours.

Séance guidée avec ULU (≈ 10 min)Diagnostic, explication, exercices adaptés et bilan.

Objectifs

  • Définir et appeler une fonction, distinguer return et print
  • Distinguer variables locales et variables globales
  • Rédiger la spécification d’une fonction (docstring, préconditions, postconditions)
  • Écrire un jeu de tests avec assert, en pensant aux cas limites
  • Utiliser une bibliothèque (import) et sa documentation (help)

1. Définir et appeler une fonction

  • def introduit la fonction, suivie de son nom et de ses paramètres entre parenthèses.
  • Lors de l’appel aire_rectangle(4, 3), les arguments 4 et 3 sont affectés aux paramètres.
  • return renvoie une valeur et termine immédiatement la fonction.
  • Une fonction sans return renvoie la valeur spéciale None.

Un paramètre peut avoir une valeur par défaut : avec def puissance(x, n=2), l’appel puissance(5) renvoie 25.

2. Variables locales et globales

Une variable affectée dans une fonction est locale : elle n’existe que pendant l’exécution de la fonction et n’est pas visible à l’extérieur. Une variable définie dans le programme principal est globale.

3. Spécifier une fonction

Spécification : Description de ce que fait une fonction : son prototype (nom, paramètres et leurs types), ses préconditions (conditions que doivent vérifier les arguments) et ses postconditions (ce qui est garanti sur le résultat).

L’instruction assert condition ne fait rien si la condition est vraie ; sinon elle arrête le programme avec une erreur AssertionError. On l’utilise pour vérifier une précondition ou pour écrire des tests.

4. Tester une fonction

Un jeu de tests compare le résultat de la fonction à la valeur attendue sur des exemples choisis : des cas généraux et des cas limites (liste vide ou à un seul élément, valeur 0, nombres négatifs, bornes d’un intervalle…).

5. Utiliser une bibliothèque

Avec import math, on écrit math.sqrt ; avec from math import sqrt, on écrit directement sqrt. Lire la documentation (help, ou la documentation en ligne) permet de connaître la spécification des fonctions fournies.

À retenir

  • return renvoie une valeur et arrête la fonction ; sans return, la fonction renvoie None.
  • Les variables affectées dans une fonction sont locales.
  • Spécification = prototype + préconditions + postconditions, écrite dans la docstring.
  • assert condition arrête le programme si la condition est fausse : on l’utilise pour les préconditions et les tests.
  • Un bon jeu de tests contient des cas généraux et des cas limites ; il révèle des erreurs mais ne prouve pas la correction.

Et maintenant, à toi !

Vérifie que tu as compris avec les exercices, puis révise avec la fiche.

À découvrir aussi

Première · Numérique et sciences informatiques (NSI)

Représenter les entiers : binaire, hexadécimal, complément à deux

Écrire un entier en base 2 et en base 16, passer d’une base à l’autre, coder les entiers relatifs en complément à deux : cours et exercices de NSI en Première.