Fonctions et modules
Ce que tu vas apprendre
- Définir une fonction, lui passer des valeurs et récupérer un résultat.
- Comprendre la portée des variables.
- Découper un programme en modules et importer ceux de Python.
Définir une fonction
Une fonction est un bloc de code nommé qu'on peut appeler autant de fois qu'on veut. On la crée avec def.
def saluer(nom):
print(f"Bonjour {nom}")
saluer("Léa")
saluer("Tom")
Ce code affiche deux salutations. Le code de la fonction ne s'exécute qu'à l'appel. nom est un paramètre : un nom local qui reçoit la valeur donnée à l'appel, appelée argument.
Renvoyer un résultat
return envoie une valeur à celui qui appelle la fonction, puis termine la fonction.
def prix_total(prix, portions):
return prix * portions
total = prix_total(3.5, 4)
print(total)
Résultat : 14.0. Sans return, une fonction renvoie None. Distingue bien print, qui affiche à l'écran, de return, qui fournit une valeur utilisable ailleurs.
Valeurs par défaut et arguments nommés
Un paramètre peut avoir une valeur par défaut, utilisée si on ne passe rien.
def servir(plat, portions=2):
return f"{plat} pour {portions} personnes"
print(servir("Gratin"))
print(servir("Gratin", 6))
print(servir("Gratin", portions=4))
Le premier appel utilise 2, le deuxième 6, le troisième 4. Le dernier est un argument nommé : on précise le nom du paramètre, ce qui rend l'appel plus clair.
La portée des variables
Une variable créée dans une fonction n'existe que dans cette fonction. C'est sa portée.
def calculer():
resultat = 10
return resultat
calculer()
print(resultat)
La dernière ligne provoque une NameError, car resultat est locale à calculer. Pour récupérer une valeur, utilise return.
calculer_prix, lire_recette. Elles sont plus faciles à tester et à réutiliser.Documenter avec une docstring
Une docstring est un texte entre triples guillemets, placé juste sous la ligne def. Elle décrit la fonction.
def prix_total(prix, portions):
"""Renvoie le prix d'une recette pour un nombre de portions."""
return prix * portions
help(prix_total)
help() affiche cette description dans le terminal. Les éditeurs la montrent aussi au survol.
Les modules
Un module est un fichier .py dont on peut réutiliser le contenu. Crée calculs.py :
def prix_total(prix, portions):
return prix * portions
Dans main.py, placé dans le même dossier, importe-le avec import :
import calculs
print(calculs.prix_total(3.5, 4))
On accède au contenu avec le nom du module, un point, puis le nom de la fonction. Pour importer un nom précis :
from calculs import prix_total
print(prix_total(3.5, 4))
La bibliothèque standard
Python est livré avec de nombreux modules prêts à l'emploi, regroupés dans la bibliothèque standard. Quelques exemples :
| Module | Usage |
|---|---|
math | Fonctions mathématiques (math.sqrt, math.pi). |
random | Tirage au sort. |
datetime | Dates et heures. |
json | Lire et écrire du JSON. |
pathlib | Manipuler des chemins de fichiers. |
import random
plats = ["Crêpes", "Gratin", "Soupe"]
print(random.choice(plats))
random.choice renvoie un élément au hasard de la liste : une idée de menu pour ce soir.
random.py dans ton dossier masquerait le vrai module random.À retenir
def nom(parametres):définit une fonction, appelée avecnom(arguments).returnrenvoie une valeur ; sans lui, la fonction renvoieNone.- Un paramètre peut avoir une valeur par défaut et accepter un argument nommé.
- Une variable créée dans une fonction reste locale à celle-ci.
- Un module est un fichier
.pyque l'on charge avecimport. - La bibliothèque standard fournit
math,random,json,pathlibet bien d'autres.
Pour aller plus loin
Sources officielles
Ensuite
Conditions et boucles
Faire des choix avec if, elif et else, répéter des actions avec for et while, et comprendre pourquoi l'indentation compte en Python.
Listes, dictionnaires et tuples
Regrouper des valeurs avec les listes, les dictionnaires et les tuples, puis les transformer avec les compréhensions.
- Projet
- Lignes de code
- Niveau
- Le quartier
- Appartement
- Python
- Pièce
- 3/7
- Plan n°
- python/03.fonctions-et-modules