Définir et utiliser une fonction en Python

Définition, méthode pas à pas, exemple corrigé et exercice type contrôle de Seconde.

Maths Seconde Lecture : 5 min Programme officiel 2019

En programmation, une fonction est un bloc de code réutilisable qui effectue une tâche spécifique. Elle prend des arguments (ou paramètres) en entrée, effectue des opérations, et peut renvoyer un résultat. Définir une fonction permet de structurer un programme, d'éviter la répétition de code et de faciliter la maintenance.

Bon réflexe : Découpe ton programme en fonctions dès que tu identifies une tâche répétitive ou une logique spécifique, cela rend le code plus clair et plus facile à gérer.
1

Définir la fonction

Utiliser le mot-clé def suivi du nom de la fonction, des parenthèses contenant les arguments (s'il y en a), et d'un double point :. Le corps de la fonction doit être indenté.

2

Spécifier les arguments

Les arguments sont des variables locales à la fonction. Ils sont séparés par des virgules. Si une fonction n'a pas d'arguments, les parenthèses restent vides.

3

Écrire le corps de la fonction

C'est l'ensemble des instructions qui seront exécutées lorsque la fonction sera appelée. Chaque ligne doit être indentée (généralement 4 espaces).

4

Renvoyer un résultat (optionnel)

Utiliser le mot-clé return suivi de la valeur à renvoyer. Si return n'est pas utilisé, la fonction renvoie implicitement None. L'exécution de la fonction s'arrête dès qu'un return est rencontré.

5

Appeler la fonction

Pour exécuter le code de la fonction, il faut l'appeler en utilisant son nom suivi des parenthèses contenant les valeurs des arguments (s'il y en a). Le résultat peut être stocké dans une variable.

Écrire une fonction Python nommée calculer_aire_rectangle qui prend en arguments la longueur et la largeur d'un rectangle, et renvoie son aire. Ensuite, utiliser cette fonction pour calculer l'aire d'un rectangle de longueur $5$ et de largeur $3$.
1
Définir la fonction avec ses arguments
On nomme la fonction calculer_aire_rectangle et elle prend deux arguments : longueur et largeur.
def calculer_aire_rectangle(longueur, largeur):
2
Écrire le corps de la fonction pour calculer l'aire
L'aire est le produit de la longueur par la largeur. On stocke ce résultat dans une variable locale aire.
    aire = longueur * largeur
3
Renvoyer le résultat
La fonction doit renvoyer la valeur de l'aire.
    return aire
4
Appeler la fonction avec les valeurs données
On appelle la fonction avec longueur = 5 et largeur = 3, et on stocke le résultat dans une variable resultat_aire.
resultat_aire = calculer_aire_rectangle(5, 3)
5
Afficher le résultat
Pour vérifier le bon fonctionnement, on affiche la valeur renvoyée.
print(f"L'aire du rectangle est : {resultat_aire}")
Le programme complet est :
def calculer_aire_rectangle(longueur, largeur):
    aire = longueur * largeur
    return aire

resultat_aire = calculer_aire_rectangle(5, 3)
print(f"L'aire du rectangle est : {resultat_aire}")
# Affiche : L'aire du rectangle est : 15
  1. Erreur d'indentation : Oublier d'indenter le corps de la fonction ou utiliser une indentation inconsistante (par exemple, mélanger espaces et tabulations) provoque une erreur IndentationError.
  2. Variable non définie : Tenter d'utiliser une variable définie à l'intérieur d'une fonction (variable locale) en dehors de celle-ci. Les variables locales n'existent que pendant l'exécution de la fonction.
  3. Oublier return : Si une fonction est censée renvoyer une valeur mais que le mot-clé return est omis, la fonction renverra None par défaut, ce qui peut entraîner des erreurs si le programme s'attend à un nombre ou une chaîne de caractères.
Écrire un programme Python qui définit et utilise une fonction nommée est_pair. Cette fonction prend un nombre entier en argument et renvoie True si le nombre est pair, et False sinon.

  1. Définir la fonction est_pair.
  2. Utiliser cette fonction pour tester si les nombres $10$ et $7$ sont pairs, puis afficher le résultat pour chacun.
def est_pair(nombre):
    # Un nombre est pair si le reste de sa division par 2 est 0
    if nombre % 2 == 0:
        return True
    else:
        return False

# Test pour le nombre 10
resultat_10 = est_pair(10)
print(f"Le nombre 10 est-il pair ? {resultat_10}")

# Test pour le nombre 7
resultat_7 = est_pair(7)
print(f"Le nombre 7 est-il pair ? {resultat_7}")

Explication :
  • La fonction est_pair prend un argument nombre.
  • L'opérateur modulo % donne le reste de la division. Si nombre % 2 est égal à $0$, le nombre est pair.
  • La fonction renvoie True ou False selon le résultat du test.
  • Les appels est_pair(10) et est_pair(7) exécutent la fonction et leurs résultats sont affichés.

Affichage attendu :
Le nombre 10 est-il pair ? True
Le nombre 7 est-il pair ? False

Questions fréquentes

Quelle est la différence entre un argument et un paramètre ?
Le terme paramètre est utilisé lors de la définition de la fonction (ex: longueur et largeur dans def calculer_aire_rectangle(longueur, largeur):). Le terme argument est utilisé lors de l'appel de la fonction, c'est la valeur concrète passée au paramètre (ex: $5$ et $3$ dans calculer_aire_rectangle(5, 3)).
Peut-on définir une fonction sans arguments ?
Oui, tout à fait. Dans ce cas, les parenthèses sont vides lors de la définition et de l'appel. Par exemple :
def saluer():
    print("Bonjour !")

saluer() # Appel de la fonction
Que se passe-t-il si une fonction ne contient pas de return ?
Si une fonction ne contient pas d'instruction return explicite, elle renvoie implicitement la valeur spéciale None. C'est un type de données en Python qui représente l'absence de valeur. Par exemple :
def ma_fonction_sans_return():
    a = 5 + 3

resultat = ma_fonction_sans_return()
print(resultat) # Affiche : None
Est-ce que l'ordre des arguments est important lors de l'appel d'une fonction ?
Oui, l'ordre des arguments est crucial par défaut. Python associe les arguments passés aux paramètres de la fonction dans l'ordre où ils sont définis. Si vous inversez l'ordre, la fonction utilisera les valeurs pour les mauvais paramètres, ce qui peut entraîner des résultats incorrects ou des erreurs. Il est possible de passer des arguments par leur nom (arguments nommés) pour éviter ce problème, mais c'est une notion plus avancée.

Le passage en Seconde est difficile ?

Adil accompagne les élèves de Seconde, à domicile dans le Val d'Oise ou en ligne. Un seul prof, du premier cours jusqu'au Bac.

06 20 13 00 82 Cours de maths en Seconde →