Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 23

Functions: Parameters and Return Values

Recommended resources

Bonjour ! Dans la leçon précédente, nous avons exploré les boucles for et while, qui vous ont donné le pouvoir d'automatiser des tâches répétitives. Vous pouvez maintenant exécuter du code des centaines de fois sans avoir à le réécrire. Mais que se passe-t-il si le bloc de code que vous répétez est lui-même long et complexe ? C'est là que les fonctions entrent en jeu.

Cette leçon vous apprendra à écrire et appeler des fonctions avec des paramètres et des valeurs de retour. Les fonctions sont la pierre angulaire de tout programme bien organisé. Elles vous permettent de regrouper un ensemble d'instructions sous un nom unique, de le rendre réutilisable, et de le rendre plus facile à lire et à déboguer. Pour votre objectif d'apprendre le machine learning, la maîtrise des fonctions est non négociable. Les modèles, les étapes de prétraitement des données et les calculs de métriques sont presque toujours encapsulés dans des fonctions.

Pourquoi utiliser des fonctions ?

Avant de plonger dans la syntaxe, il est crucial de comprendre pourquoi les fonctions sont si importantes. Un programmeur débutant peut être tenté de simplement copier-coller du code, mais cette approche mène rapidement à des erreurs et à des programmes difficiles à maintenir.

Writing Functions in Python— A Beginner's Guide

Cet article de Jessica Miles explique de manière très convaincante les avantages de l'écriture de fonctions, au-delà de la simple réutilisabilité du code.

Lisez la première section, Pourquoi écrire des fonctions ?. Faites particulièrement attention aux points concernant la prévention des erreurs et la capacité à utiliser votre code sans avoir à vous souvenir de chaque détail de son fonctionnement interne.


1. L'anatomie d'une fonction

Une fonction en Python est un bloc de code nommé qui peut accepter des données en entrée (paramètres) et produire un résultat en sortie (valeur de retour).

L'image suivante décompose visuellement toutes les parties d'une fonction simple :

Cette image illustre les composants clés d'une fonction Python : le mot-clé `def`, le nom de la fonction, les paramètres, le corps de la fonction, la valeur de retour et l'appel de la fonction.

Nous allons maintenant examiner chaque partie en détail.


2. Définir et appeler une fonction

Le concept fondamental d'une fonction est de définir un bloc de code une seule fois, puis de l'exécuter (l'« appeler ») autant de fois que nécessaire.

Pour commencer, regardons comment définir une fonction simple et comment l'appeler.

Learn Python in Arabic #056 - Function And Return

Cette vidéo d'Elzero Web School, l'une des chaînes que vous avez mentionnées, est une excellente ressource en arabe pour apprendre les bases des fonctions.

Pour l'instant, regardez la première partie de la vidéo qui explique le concept de fonction, pourquoi on l'utilise et comment en définir une (introduction et définition). Observez bien la syntaxe avec le mot-clé def. Ensuite, regardez comment la fonction est appelée et exécutée (appel de fonction).

La syntaxe de base est la suivante :




# Définition de la fonction
def saluer():
    print("Bonjour !")
    print("Bienvenue dans le monde des fonctions Python.")




# Appel de la fonction
print("Le programme commence ici.")
saluer()
print("Le programme continue après l'appel.")
saluer() # On peut l'appeler à nouveau

Points clés :

  • def : C'est le mot-clé qui indique à Python que vous définissez une fonction.
  • saluer() : C'est le nom de la fonction, suivi de parenthèses. Les noms de fonction suivent les mêmes règles que les noms de variables.
  • : : Le deux-points à la fin de la ligne def est obligatoire.
  • Indentation : Tout le code qui fait partie de la fonction doit être indenté (décalé vers la droite). C'est ainsi que Python sait où le corps de la fonction commence et se termine.

3. Passer des données : Paramètres et Arguments

Les fonctions deviennent vraiment puissantes lorsque vous pouvez leur passer des informations. Par exemple, au lieu d'une fonction qui dit simplement "Bonjour", vous pourriez vouloir une fonction qui salue une personne par son nom.

Pour cela, on utilise des paramètres dans la définition de la fonction et des arguments lors de son appel.

  • Un paramètre est la variable listée à l'intérieur des parenthèses dans la définition de la fonction. C'est un emplacement réservé pour une valeur.
  • Un argument est la valeur réelle qui est envoyée à la fonction lorsque vous l'appelez.

الدوال في لغة بايثون Python

Cet article de l'Académie Hassoub explique très clairement la différence entre les paramètres et les arguments. C'est une terminologie importante à maîtriser.

Lisez la section def avec paramètres pour voir comment ajouter un paramètre à une fonction. Ensuite, lisez la section de révision Définition, appel, passage, arguments et paramètres ! qui résume parfaitement ces nouveaux termes.

Voici un exemple concret :




# 'nom' est un paramètre
def saluer_personne(nom):
    print(f"Bonjour, {nom} !")




# "Ahmed" est un argument
saluer_personne("Ahmed")




# "Fatima" est un autre argument
saluer_personne("Fatima")

Une fonction peut avoir plusieurs paramètres. L'ordre dans lequel vous passez les arguments est important, car ils sont assignés aux paramètres dans le même ordre.

Functions in Python are easy 📞

Cette vidéo de Bro Code, bien qu'en anglais, utilise des animations très claires pour illustrer la relation entre arguments et paramètres.

Regardez la section sur les arguments. Observez comment les valeurs (arguments) envoyées lors de l'appel de la fonction sont "attrapées" par les variables (paramètres) dans la définition de la fonction. Notez également l'importance de l'ordre.


4. Obtenir des résultats : L'instruction return

Jusqu'à présent, nos fonctions ont seulement effectué une action (afficher du texte). Cependant, il est souvent plus utile qu'une fonction effectue un calcul et nous renvoie le résultat. Ce résultat peut ensuite être stocké dans une variable ou utilisé dans une autre partie de votre programme.

L'instruction return met fin à l'exécution de la fonction et renvoie une valeur à l'endroit où la fonction a été appelée.

الدوال في لغة بايثون Python

La même ressource de l'Académie Hassoub explique le concept de valeur de retour et l'instruction return.

Lisez la section Valeurs de retour et instruction return. Faites bien la différence entre une fonction qui print un résultat et une fonction qui return un résultat. Lisez aussi la courte section sur La valeur None, qui explique ce qu'une fonction renvoie si vous n'utilisez pas return.

Comparons deux fonctions :




# Fonction qui AFFICHE le résultat
def afficher_addition(a, b):
    resultat = a + b
    print(f"Le résultat est : {resultat}")




# Fonction qui RETOURNE le résultat
def calculer_addition(a, b):
    resultat = a + b
    return resultat




# Utilisation de la première fonction
print("Appel de la fonction d'affichage :")
afficher_addition(5, 3) 



# La ligne ci-dessus affiche "Le résultat est : 8", mais nous ne pouvons pas utiliser ce '8' ailleurs.




# Utilisation de la deuxième fonction
print("\nAppel de la fonction de calcul :")
somme = calculer_addition(5, 3) # Le '8' est retourné et stocké dans la variable 'somme'
print(f"La valeur retournée est : {somme}")
print(f"Nous pouvons maintenant réutiliser ce résultat : {somme * 2}") # Affiche 16

La capacité à retourner des valeurs est fondamentale. En machine learning, vous aurez des fonctions qui retournent des ensembles de données nettoyées, des modèles entraînés, ou des scores de performance.


Pratique dans Jupyter

Il est temps de mettre tout cela en pratique. Ouvrez un notebook Jupyter et essayez de résoudre ces exercices.

Exercice 1 : Convertisseur de température
Créez une fonction celsius_en_fahrenheit qui prend une température en degrés Celsius en paramètre, la convertit en Fahrenheit et retourne le résultat. La formule est : .




# Votre code ici
def celsius_en_fahrenheit(celsius):
    fahrenheit = celsius * 9/5 + 32
    return fahrenheit




# Testez votre fonction
temp_c = 25
temp_f = celsius_en_fahrenheit(temp_c)
print(f"{temp_c}°C équivaut à {temp_f}°F.") # Devrait afficher 77.0

Exercice 2 : Calculateur de moyenne
Créez une fonction calculer_moyenne qui prend une liste de nombres en paramètre et retourne leur moyenne. Vous pouvez utiliser les fonctions intégrées sum() et len().




# Votre code ici
def calculer_moyenne(nombres):
    if len(nombres) == 0:
        return 0 # Gérer le cas d'une liste vide pour éviter une division par zéro
    total = sum(nombres)
    moyenne = total / len(nombres)
    return moyenne




# Testez votre fonction
notes = [15, 18, 12, 16, 19]
moyenne_notes = calculer_moyenne(notes)
print(f"La moyenne des notes est : {moyenne_notes}") # Devrait afficher 16.0

Exercice 3 : La conjecture de Collatz (Défi)
Cet exercice combine tout ce que vous avez appris jusqu'à présent : fonctions, boucles et conditions.

Lisez les instructions ci-dessous pour créer un programme basé sur la "conjecture de Collatz".

الدوال في لغة بايثون Python

Cet exercice pratique de l'article de l'Académie Hassoub est un excellent moyen de synthétiser vos connaissances.

Lisez les instructions dans la section qui commence par "Écrivez une fonction nommée collatz()". Vous devez d'abord créer la fonction collatz() qui prend un nombre, effectue une opération selon qu'il est pair ou impair, puis retourne le résultat. Ensuite, vous devez écrire un programme qui demande un nombre à l'utilisateur et appelle cette fonction en boucle jusqu'à ce que le résultat soit 1.

Voici une solution possible pour que vous puissiez comparer. Essayez de le faire vous-même d'abord !

def collatz(number):
    """
    Prend un entier en entrée.
    Retourne number // 2 si number est pair.
    Retourne 3 * number + 1 si number est impair.
    """
    if number % 2 == 0: # Pair
        result = number // 2
        print(result)
        return result
    else: # Impair
        result = 3 * number + 1
        print(result)
        return result

try:
    saisie_utilisateur = int(input("Entrez un nombre entier : "))
    while saisie_utilisateur != 1:
        saisie_utilisateur = collatz(saisie_utilisateur)
except ValueError:
    print("Erreur : vous devez entrer un nombre entier.")


Conclusion

Félicitations ! Vous avez franchi une étape majeure dans votre parcours de programmeur. Les fonctions sont l'outil principal pour créer des programmes structurés, lisibles et maintenables.

Points clés à retenir :

  • def est le mot-clé pour définir une fonction.
  • Les paramètres sont les variables dans la définition de la fonction qui reçoivent les données.
  • Les arguments sont les valeurs réelles que vous passez à la fonction lors de son appel.
  • return est utilisé pour qu'une fonction renvoie un résultat, ce qui permet de le stocker et de le réutiliser.
  • Une fonction qui n'a pas d'instruction return renvoie implicitement None.

Maintenant que vous savez comment organiser votre code en blocs logiques avec les fonctions, nous allons, dans le prochain module, explorer des manières plus sophistiquées d'organiser vos données. Nous plongerons dans les structures de données fondamentales de Python : les listes et les dictionnaires. Vous verrez rapidement que les fonctions sont les outils parfaits pour manipuler et extraire des informations de ces structures.