Langages et programmation
L'essentiel en 30 secondes
Les notions à connaître
- Fonction
- Bloc de code nommé et réutilisable. Définie avec def nom(params): ... return résultat. Prend des paramètres (entrées) et renvoie un résultat (sortie). Permet la décomposition et la réutilisation.
- Spécification (docstring)
- Documentation d'une fonction entre triple guillemets. Décrit : le rôle, les paramètres (noms et types), la valeur de retour (type), les préconditions. Accessible via ou f.__doc__.
- Précondition / Postcondition
- Précondition : ce qui doit être vrai AVANT l'appel (ex : n >= 0). Postcondition : ce qui est garanti APRÈS l'appel (ex : le résultat est trié). Les assertions vérifient ces conditions.
- Assertion (assert)
- assert condition, 'message'. Si condition est False AssertionError. Sert à vérifier préconditions et à tester. Désactivable en production (python -O).
- Portée des variables (scope)
- Variable locale = définie dans une fonction, inaccessible dehors. Variable globale = définie au niveau du module. Règle LEGB : Local Enclosing Global Built-in. Éviter global var.
- Mise au point (débogage)
- Recherche et correction des erreurs. Techniques : lire le traceback, print() stratégiques, assert, pas-à-pas avec un débogueur, tests unitaires.
- Jeu de tests
- Ensemble de cas de test pour vérifier une fonction : cas normaux, cas limites (0, vide, un seul élément), cas d'erreur. Plus le jeu est complet, plus la confiance est grande.
- Effet de bord
- Modification d'une variable extérieure ou d'un état global par une fonction. À éviter : une fonction devrait idéalement ne dépendre que de ses paramètres et ne communiquer que par return.
Les erreurs à éviter en nsi
Confondre print() et return : print affiche mais ne renvoie rien d'utilisable
Utilise return pour que la fonction renvoie une valeur exploitable. print() sert au débogage, pas au résultat.
Ne pas tester les cas limites : liste vide, n = 0, chaîne vide
Un jeu de tests complet inclut TOUJOURS les cas limites et les cas d'erreur. C'est là que les bugs se cachent.
Modifier une variable globale dans une fonction (effet de bord)
Évite les variables globales. Passe tout en paramètre et renvoie le résultat avec return.
Utiliser un mutable comme paramètre par défaut : def f(lst=[])
La liste est partagée entre les appels ! Utilise def f(lst=None): if lst is None: lst = [].
Ne pas lire le message d'erreur Python
Le traceback donne le type d'erreur, la ligne et souvent la cause exacte. Lis toujours de bas en haut.
Sais-tu répondre à ces questions ?
Les corrigés détaillés sont dans le quiz du chapitre.
- Qu'affiche le code suivant ? def saluer(nom): return "Bonjour " + nom print(saluer("Alice"))
- Quelle est la différence entre print() et return dans une fonction Python ?
- Qu'est-ce qu'une spécification de fonction (docstring) ?
- Qu'affiche le code suivant ? x = 10 def f(): x = 5 return x f() print(x)
- Qu'affiche le code suivant ? def mystere(n): if n <= 0: return 0 return n + mystere(n - 1) print(mystere(4))
Accède à la fiche complète
Crée ton compte gratuit pour lire la fiche en entier et accéder à 7 000+ contenus de révision.