NSI · Première

Les fonctions

Apprendre à structurer son code en sous-programmes, comprendre le rôle des paramètres, de l'indentation et la différence essentielle entre return et print.

Les fonctions

Les fonctions permettent de décomposer un programme complexe en une série de sous-programmes plus simples. De plus, les fonctions sont réutilisables : si nous disposons d'une fonction capable de calculer une racine carrée, par exemple, nous pouvons l'utiliser partout sans avoir à la réécrire (on parle de factorisation du code).

La notion de fonction en informatique est comparable à la notion de fonction en mathématiques. Si nous avons y = 3x + 2, pour une valeur donnée de x, nous obtenons une valeur de y.

  • Exemple : pour x = 4, on obtient y = 14 (y = 3 x 4 + 2 = 14).

Notion de fonctionNotion de fonction

Syntaxe en Python

Voici la syntaxe employée pour définir une fonction :

Python
1
2
3
4
def nom_de_la_fonction(parametre):
instruction_1
instruction_2
return y
Définition

L'Indentation

Notez bien la présence du décalage (retrait) entre la première ligne et les lignes suivantes. Ce décalage est appelé indentation. L'indentation permet de définir un bloc de code. Toutes les instructions alignées dans ce bloc font partie de la fonction. L'instruction suivante non indentée marquera la fin de la fonction.

Pour indenter du code, il y a 2 solutions : mettre 4 espaces ou utiliser une tabulation. En Python, il est conseillé d'utiliser les 4 espaces. Une fois que vous avez choisi une méthode, n'en changez surtout pas au cours d'un même programme !

Reprenons notre exemple mathématique (y = 3x + 2) sous forme de fonction :

Python
1
2
3
def ma_fonction(x):
y = 3 * x + 2
return y

Pour utiliser (ou appeler) cette fonction dans notre script :

Python
1
solution = ma_fonction(4)
Activité

Activité 15 : Premier test de fonction

Testez le programme ci-dessus dans votre éditeur. Quelle est la valeur finale associée au nom solution ?

Activité

Activité 16 : Fonction polynôme

Codez en Python la fonction mathématique suivante : y = x^2 + 2x + 10 Testez votre fonction à l'aide de la console pour différentes valeurs de x.

Paramètres multiples et types

Une fonction peut accepter plusieurs paramètres d'entrée séparés par des virgules.

Activité

Activité 19 : Paramètres multiples

Quel est le résultat renvoyé par la fonction ci-dessous si l'on saisit dans la console une_autre_fonction(5, 3) ?

Python
1
2
3
def une_autre_fonction(x, b):
y = 3 * x + b
return y
Activité

Activité 20 : Paramètres textuels

Quel est le résultat attendu après l'exécution du programme ci-dessous et la saisie dans la console de dit_bonjour("toto", 14) ?

Python
1
2
3
def dit_bonjour(nom, age):
phrase = f"Bonjour {nom}, vous avez {age} ans."
return phrase

*(Remarquez bien les guillemets autour du paramètre "toto" car il s'agit d'une chaîne de caractères.)*

Fonctions sans paramètres ou sans retour

Les paramètres ne sont pas obligatoires pour concevoir une fonction.

Activité

Activité 21 : Fonction sans paramètre

Testez la fonction suivante :

Python
1
2
def ma_fon():
return "voici une fonction qui ne sert à rien"

Appelez-la dans la console avec ma_fon(). Que se passe-t-il ?

Différence fondamentale entre return et print

Une fonction ne renvoie pas forcément de valeur (le mot-clé return n'est pas obligatoire). Elle peut faire des actions, comme afficher un texte à l'écran via un print.

Activité

Activité 22 : Remplacement de return par print

Soit le programme suivant :

Python
1
2
3
def dit_bonjour(nom, age):
phrase = f"Bonjour {nom}, vous avez {age} ans."
print(phrase)

Testez cette fonction à l'aide de la console avec dit_bonjour("toto", 14).

Regardons la différence fondamentale :

  • Si on utilise return dans une fonction f :
Python
1
2
>>> f(10) + 5
28

Le résultat de f(10) (qui vaut 23) est renvoyé et peut être réutilisé pour d'autres calculs.

  • Si on utilise print sans return dans une fonction g :
Python
1
2
>>> g(10) + 5
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

La fonction g affiche la valeur à l'écran mais ne renvoie rien (sa valeur de retour par défaut est None). On ne peut donc pas l'additionner à 5.

Le return est un "siège éjectable"

Dès que l'interpréteur rencontre l'instruction return, il quitte immédiatement la fonction. Toute ligne de code écrite après le return dans la fonction ne sera jamais exécutée.

Observez la différence entre ces deux fonctions :

Python
1
2
3
4
5
6
7
def g(x):
print("ce texte sera bien affiché")
return 2*x + 3
def h(x):
return 2*x + 3
print("ceci ne sera jamais affiché")

Si vous lancez h(4), le message ne s'affichera pas car l'exécution est éjectée dès la ligne du return.

Avez-vous compris ce chapitre ?

Cochez-le pour l'enregistrer dans votre progression d'apprentissage.