Le quartierPY PythonPièce 3/7Débutant

Fonctions et modules

Écrire ses propres fonctions avec def et return, puis ranger et réutiliser son code grâce aux modules et à import.

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.

Écris des fonctions qui font une seule chose et dont le nom est un verbe : 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 :

calculs.py
def prix_total(prix, portions):
    return prix * portions

Dans main.py, placé dans le même dossier, importe-le avec import :

main.py
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 :

ModuleUsage
mathFonctions mathématiques (math.sqrt, math.pi).
randomTirage au sort.
datetimeDates et heures.
jsonLire et écrire du JSON.
pathlibManipuler 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.

Ne nomme pas ton propre fichier comme un module existant. Un fichier random.py dans ton dossier masquerait le vrai module random.

À retenir

  • def nom(parametres): définit une fonction, appelée avec nom(arguments).
  • return renvoie une valeur ; sans lui, la fonction renvoie None.
  • 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 .py que l'on charge avec import.
  • La bibliothèque standard fournit math, random, json, pathlib et bien d'autres.

Pour aller plus loin

Sources officielles

Ensuite

Projet
Lignes de code
Niveau
Le quartier
Appartement
Python
Pièce
3/7
Plan n°
python/03.fonctions-et-modules
Lignes de code · fiches rédigées à partir des documentations officielles, sources citées en bas de chaque page.