Mathématiques · Seconde
Les fonctions en Python : cours de Seconde
Publié le 9 novembre 2026 · Mis à jour le 9 novembre 2026 · Signaler une erreur
L'essentiel
- Une fonction Python se définit avec def, un nom, des paramètres entre parenthèses, deux-points, puis un bloc indenté 1.
- return renvoie un résultat à l'endroit de l'appel et arrête la fonction ; print se contente d'afficher et ne renvoie rien d'utilisable.
- Les variables créées dans une fonction sont locales : elles disparaissent à la fin de l'appel.
- Dans le corps d'une fonction, tu peux utiliser des conditions (if) et des boucles (for, while) pour traiter plusieurs cas ou répéter un calcul.
- Pour écrire une fonction : nommer, choisir les paramètres, écrire le corps, renvoyer avec return, tester sur des valeurs connues.
Pourquoi écrire des fonctions en Python ?
En mathématiques, tu connais déjà l'idée : une fonction associe à un nombre un nombre , toujours obtenu par la même règle. Quand tu écris , tu ne refais pas le raisonnement à chaque valeur : tu appliques la règle.
En programmation, c'est exactement le même besoin. Quand un calcul revient souvent, on ne recopie pas dix fois les mêmes lignes : on les range dans un bloc qui porte un nom, et on appelle ce bloc quand on en a besoin. Ce bloc s'appelle une fonction.
Au lycée général et technologique, le langage de programmation retenu est Python 2. La notion de fonction informatique ne figure pas au programme du collège 2 : ce cours part donc de zéro. Tu as seulement besoin de ce que tu as vu avant : les variables et l'affectation, les instructions conditionnelles et les boucles.
Une précision utile dès le départ : une fonction Python n'est pas obligée de manipuler des nombres. Elle peut travailler sur autre chose que des variables numériques 1, et il arrive même qu'elle ne renvoie rien du tout 1. Dans ce cours, la plupart des exemples seront numériques, parce que c'est le lien le plus direct avec les fonctions de mathématiques, mais garde cette idée en tête : une fonction informatique est plus large qu'une formule.
Côté lycée, on attend surtout que tu comprennes ce que fait un programme ; la recherche de la solution la plus rapide passe après la compréhension 2. Ne cherche donc pas à écrire du code « malin » : écris du code clair.
Définir une fonction avec def
Voici la plus simple des fonctions de mathématiques, , traduite en Python.
def f(x):
return 3 * x + 2
Décortiquons cette écriture ligne par ligne.
defannonce que tu définis une fonction.fest le nom de la fonction. Choisis-le clair, sans espace ni accent.(x)contient le paramètre : c'est la variable d'entrée, celle qui recevra la valeur au moment de l'appel.- Les deux-points
:terminent la ligne d'en-tête. - La ligne suivante est décalée vers la droite : c'est l'indentation. Tout ce qui est décalé fait partie du corps de la fonction.
returnindique la valeur que la fonction renvoie.
Quand tu écris ces deux lignes et que tu les exécutes, il ne se passe rien d'apparent : tu as seulement enseigné à Python ce que signifie f. Le calcul n'a lieu que lorsque tu appelles la fonction.
print(f(4))
Python remplace x par 4, calcule 3 * 4 + 2, obtient 14, puis print l'affiche. L'écriture f(4) est donc l'équivalent de « » en maths, et elle vaut 14.
- ComprendreRepérer les entrées et le résultat attendu
- NommerChoisir un nom clair, sans espace ni accent
- ParamètresLister toutes les données utiles au calcul
- Corps et returnÉcrire le calcul indenté et renvoyer le résultat
- TesterVérifier sur une valeur dont la réponse est connue
Paramètres, appels et résultat renvoyé
Une fonction peut avoir un paramètre, plusieurs, ou aucun. Le nombre de paramètres dépend de ce dont la fonction a besoin pour calculer.
def aire_rectangle(longueur, largeur):
return longueur * largeur
def bonjour():
print('Bonjour !')
La fonction aire_rectangle a deux paramètres : il faut lui donner deux valeurs, dans cet ordre. L'appel aire_rectangle(5, 3) renvoie 15. La fonction bonjour n'a aucun paramètre ; on l'appelle avec des parenthèses vides : bonjour().
Le résultat d'un appel peut être stocké dans une variable, réutilisé dans un autre calcul, ou donné à une autre fonction.
y = f(4)
z = f(y)
print(y, z)
Ici, y reçoit 14. Puis f(y) calcule 3 * 14 + 2, soit 44, et z reçoit 44. L'affichage donne 14 44. C'est l'équivalent de en maths : une fonction peut recevoir en entrée le résultat d'une autre.
return ou print : une différence qui change tout
C'est la confusion la plus répandue chez les débutants. Regarde ces deux fonctions.
def carre_a(x):
return x ** 2
def carre_b(x):
print(x ** 2)
Si tu exécutes carre_a(5) dans la console, tu vois 25. Si tu exécutes carre_b(5), tu vois aussi 25. Pourtant ce n'est pas la même chose, et la différence apparaît dès que tu veux réutiliser le résultat.
a = carre_a(5) + 1
b = carre_b(5) + 1
La première ligne donne a = 26. La seconde provoque une erreur : carre_b a affiché 25 à l'écran, mais n'a rien renvoyé au programme. Python essaie alors d'additionner « rien » et 1, ce qui n'a pas de sens.
| Question | return | |
|---|---|---|
| Affiche à l'écran ? | Non, pas tout seul | Oui |
| Renvoie une valeur au programme ? | Oui | Non (la fonction renvoie None) |
| Valeur réutilisable dans un calcul ? | Oui | Non |
| Termine la fonction ? | Oui | Non |
Variables locales : ce qui reste dans la fonction
Quand tu crées une variable à l'intérieur d'une fonction, elle n'existe que pendant l'appel. Une fois la fonction terminée, elle disparaît. On dit que cette variable est locale.
def prix_remise(prix):
reduction = prix * 0.2
return prix - reduction
print(prix_remise(50))
print(reduction)
La première ligne d'affichage donne 40.0 (c'est-à-dire 40, écrit comme un nombre décimal). La seconde produit une erreur : reduction n'existe que dans prix_remise. Le paramètre prix est lui aussi local.
Cette règle est une protection : tu peux utiliser le même nom de variable dans deux fonctions différentes sans qu'elles se gênent. Ce que tu veux faire sortir de la fonction doit passer par return.
Conditions et boucles dans une fonction
Le corps d'une fonction peut contenir tout ce que tu connais déjà : affectations, instructions conditionnelles et boucles. Il suffit de bien indenter chaque niveau.
Une situation concrète : un tarif qui varie selon l'âge.
def tarif(age):
if age < 12:
return 5
elif age < 26:
return 8
else:
return 12
Pour tarif(15), la première condition est fausse (15 n'est pas inférieur à 12), la deuxième est vraie : la fonction renvoie 8. Les conditions sont testées dans l'ordre, et dès qu'une est vraie, la fonction s'arrête grâce au return. Cela explique pourquoi on n'a pas besoin d'écrire « age >= 12 » dans le elif : si on arrive là, c'est que age < 12 est déjà faux.
Dans l'esprit des activités proposées pour le programme, une fonction de ce type sert à comparer deux offres commerciales et à voir laquelle est la plus avantageuse selon la situation 1.
Les fonctions de maths en Python
Tu rencontreras surtout les fonctions en Python pour étudier des fonctions de mathématiques : calculer des images, dresser des tableaux de valeurs, chercher des solutions, tracer une courbe.
La programmation sert aussi à automatiser le tracé d'une courbe : on calcule une série d'images, puis on relie les points obtenus. Cette automatisation fait partie des premières approches de l'algorithmique en analyse 3. Ce que tu viens d'écrire, une fonction qui calcule des images et une boucle qui la parcourt, est justement la base d'un tel tracé.
Tu peux aussi utiliser une fonction pour tester une conjecture : si tu penses que est toujours supérieur ou égal à , tu peux calculer l'image d'un grand nombre de valeurs. Mais attention : une série de tests n'est pas une démonstration. Elle t'aide à émettre une hypothèse, que les mathématiques doivent ensuite prouver.
Méthode pour écrire une fonction et erreurs à éviter
Exercices corrigés
Exercice 1 Traduire une fonction et calculer une image
On considère la fonction définie par .
- Écris en Python une fonction
hqui prendxen paramètre et renvoie . - Quelle valeur renvoie l'appel
h(3)?
Indice 1
Les parenthèses doivent être respectées : s'écrit (x + 1) ** 2.
Indice 2
N'oublie pas le symbole * pour la multiplication par 2.
Voir la correction pas à pas
On écrit l'en-tête :
def h(x):avec les deux-points.On passe à la ligne et on indente, puis on écrit
return 2 * (x + 1) ** 2 - 5.On remplace x par 3 : .
On calcule le carré : .
On multiplie par 2 : .
On retranche 5 : . L'appel
h(3)renvoie 27.
La fonction s'écrit def h(x): return 2 * (x + 1) ** 2 - 5, et h(3) renvoie 27, comme en mathématiques.
Exercice 2 Prix toutes taxes comprises
Un magasin utilise la fonction suivante.
def prix_ttc(ht, taux):
return ht * (1 + taux / 100)
- Que représentent
htettaux? - Quelle valeur renvoie
prix_ttc(80, 20)? - Cette fonction utilise
return. Explique pourquoi c'est préférable àprintsi on veut ensuite calculer le prix de dix articles.
Indice 1
Un taux de 20 % correspond à un coefficient multiplicateur de .
Indice 2
Pense à ce que tu peux faire d'une valeur renvoyée dans un autre calcul.
Voir la correction pas à pas
htdésigne le prix hors taxe, ettauxle pourcentage de taxe.On remplace :
htvaut 80 ettauxvaut 20.On calcule
taux / 100: on obtient 0,2.On calcule
1 + 0.2: on obtient 1,2.On multiplie : . L'appel renvoie 96.
Avec
return, le résultat peut être stocké ou additionné à d'autres prix ; avecprint, il s'affiche mais le programme ne le récupère pas.
prix_ttc(80, 20) renvoie 96 (en euros si le prix hors taxe est en euros). L'usage de return permet de réutiliser le résultat dans d'autres calculs.
Exercice 3 Un tarif selon l'âge
Un musée applique ces tarifs : 5 € en dessous de 12 ans, 8 € à partir de 12 ans et en dessous de 26 ans, 12 € à partir de 26 ans.
- Écris une fonction
tarif(age)qui renvoie le prix d'une entrée. - Un groupe est composé de personnes âgées de 8, 15, 30 et 25 ans. Quel est le prix total pour le groupe ?
- Écris une fonction
total(liste_ages)qui, à l'aide d'une bouclefor, renvoie le prix total d'un groupe dont les âges sont donnés dans une liste.
Indice 1
Teste les conditions dans l'ordre : d'abord age < 12, puis age < 26.
Indice 2
Pour la question 3, crée une variable s valant 0 avant la boucle, ajoute tarif(a) à chaque tour, et renvoie s après la boucle.
Voir la correction pas à pas
On écrit
def tarif(age):puis unif age < 12:qui renvoie 5, unelif age < 26:qui renvoie 8, unelse:qui renvoie 12.Pour 8 ans : 8 est inférieur à 12, le tarif est 5 €.
Pour 15 ans : pas inférieur à 12, mais inférieur à 26, le tarif est 8 €.
Pour 30 ans : aucune des deux conditions n'est vraie, le tarif est 12 €.
Pour 25 ans : inférieur à 26, le tarif est 8 €.
Total : €.
Pour la question 3, on écrit
def total(liste_ages): s = 0, puisfor a in liste_ages: s = s + tarif(a), puisreturn s, ce dernierreturnétant placé hors de la boucle.
Le groupe paie 33 €. La fonction total s'appuie sur tarif : une fonction peut en appeler une autre, ce qui permet de découper un problème en petites étapes.
Quiz
8 questions · correction immédiate · ton score reste sur ton appareil.
-
En Python, on définit une fonction avec def 1.
functionest le mot utilisé dans d'autres langages, ce qui rend l'erreur tentante, mais Python ne le reconnaît pas.returnne sert pas à définir, mais à renvoyer un résultat, etfonctionn'est pas un mot réservé. -
On remplace
xpar 2 : . Une erreur tentante est de lire**comme une multiplication et de calculer , ce qui donne aussi 5 ici, mais le raisonnement est faux :**est la puissance. Vérifie avecf(3): on obtient 10, et non 7. -
C'est faux :
printaffiche la valeur à l'écran mais ne la renvoie pas. La fonction renvoieNone, et l'additionNone + 1provoque une erreur. Le fait de voir 25 s'afficher donne l'illusion que la valeur est disponible, alors que le programme ne l'a pas récupérée. -
Dès que Python exécute
return, la fonction se termine : la ligneprint('fin')n'est jamais atteinte. Penser qu'elle s'affiche « après » est tentant parce que le code est lu de haut en bas, maisreturninterrompt ce déroulé. Il n'y a pas d'erreur de syntaxe : la ligne est correctement écrite, simplement inutile. -
Une variable locale est créée à chaque appel et disparaît ensuite ; le paramètre en est un exemple, et deux fonctions peuvent donc réutiliser le même nom sans conflit. L'affirmation « visible partout » est fausse : c'est précisément le contraire d'une variable locale, qui reste cantonnée à la fonction.
-
La boucle ajoute 1, 2, 3 puis 4 : . Si tu oublies que
range(1, n + 1)inclut 4 et s'arrête avant 5, tu risques de compter seulement jusqu'à 3 et de trouver 6. Le+ 1dansrangesert justement à inclure la valeurn. -
En Python 3,
printest une fonction : ses arguments se placent entre parenthèses 4.print xest la syntaxe d'anciennes versions, ce qui explique qu'on la rencontre encore dans certains documents.affichern'existe pas en Python, et les crochets servent à autre chose. -
La fonction
gaffiche 4 mais ne contient pas dereturn: elle ne renvoie rien d'utilisable, etyreçoit la valeur spécialeNone. Penser queyvaut 4 est l'erreur typique qui confond affichage et valeur renvoyée. L'affectation elle-même ne provoque pas d'erreur.
Les questions qu'on se pose
Quelle est la différence entre une fonction en maths et une fonction en Python ?
Elles partagent l'idée centrale : à une entrée, on associe un résultat. Mais une fonction Python est plus large. Elle n'est pas limitée aux nombres 1, elle peut afficher quelque chose sans rien renvoyer 1, et elle peut contenir des conditions et des boucles. Une fonction de maths, elle, est une correspondance : elle n'a pas d'« effets » comme l'affichage.
Pourquoi mon programme n'affiche rien alors que j'ai écrit ma fonction ?
Dans la plupart des cas, c'est qu'il manque l'appel : définir la fonction ne déclenche aucun calcul. Écris par exemple print(f(4)). Si tu as bien un appel mais que rien ne s'affiche, vérifie que tu n'as pas écrit seulement return sans print à l'extérieur : en mode script, un return ne montre rien tout seul.
Comment savoir si je dois utiliser return ou print ?
Pose-toi cette question : « Aurai-je besoin de cette valeur plus loin dans le programme ? ». Si oui, utilise return. Si le seul but est de montrer un message à l'utilisateur, utilise print. Pour une fonction de calcul (une image, un prix, une somme), c'est presque toujours return ; on met le print à l'extérieur, au moment de l'appel.
Faut-il optimiser le code pour qu'il soit rapide ?
Non, pas à ce niveau. Au lycée, la compréhension est privilégiée par rapport à l'optimisation du code 2. Ce qu'on attend de toi : un programme clair, correct, que tu sais expliquer et tester sur des exemples. Un code plus long mais lisible vaut mieux qu'un code astucieux que tu ne maîtrises pas.
Que faire quand Python affiche une erreur ?
Lis le message en entier, en commençant par la dernière ligne : elle nomme le type d'erreur ; le numéro de la ligne concernée apparaît juste au-dessus. Les causes classiques sont un deux-points oublié, une indentation incorrecte, un 3x à la place de 3 * x, ou une variable locale utilisée hors de sa fonction. Corrige une erreur à la fois, puis relance.
Sources
- Ressource Éduscol - Algorithmique et programmation (document d'accompagnement), Éduscol - Ministère de l'Éducation nationale. Consulté le 9 novembre 2026.
- Ressource Éduscol - Fonctions et programmation, Éduscol - Ministère de l'Éducation nationale. Consulté le 9 novembre 2026.
- Document ressource fonctions - IREM, IREM - Université de Lille. Consulté le 9 novembre 2026.
- Python (langage), Wikipédia. Consulté le 9 novembre 2026.
Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.