Apprenez en lisant dans l'ordre

Définir des fonctions avec def — arguments, valeurs de retour, arguments par défaut et nommés

Apprends à définir tes propres fonctions en Python avec def, return, arguments par défaut et arguments nommés.

Quand la même logique doit s'exécuter plusieurs fois, tu veux un moyen de donner un nom à cette logique et de l'appeler d'où tu veux. Ce mécanisme, c'est une fonction, définie avec le mot-clé def.

Avec les fonctions, la logique partagée vit à un seul endroit et chaque site d'appel est une seule ligne. Tout ce que tu as utilisé jusqu'ici — print() / len() / int() / sum() — est aussi une fonction.

Les bases de def et return

Définis une fonction avec def nom_fonction(arguments): et indente le corps. Renvoie une valeur à l'appelant avec return valeur. Une fonction sans return renvoie de fait None.

Fonctions, arguments et valeurs de retour
argument(entrée)fonction(corps)valeur de retour(sortie)passereturn

L'argument est ce que l'appelant passe à la fonction, et la valeur de retour est ce que la fonction renvoie via return. Comme la même fonction peut être appelée avec différents arguments pour différents résultats, une seule définition peut alimenter de nombreux sites d'appel.

Définir et appeler une fonction
définirexécuterdef greet(name): return ...greet("Alice")exécute le corpsvaleur de retourrevientname: Alicereturn ...

Une fonction créée avec def n'est pas exécutée par le fait d'être enregistrée dans le namespace. Le corps ne s'exécute que quand un appel comme greet("Alice") a lieu — et la valeur de return revient vers l'appelant.

# Pas d'arguments, pas de valeur de retour
def print_hello():
    print("Hello World")

print_hello()        # Hello World

# Deux arguments, une valeur de retour
def max_num(a, b):
    if a >= b:
        return a
    return b

result = max_num(30, 20)
print(result)        # 30

# return sort de la fonction ; ce qui suit ne s'exécute pas
def check(x):
    if x < 0:
        return "négatif"
    return "non négatif"

print(check(-5))     # négatif

Écris une fonction qui applique un taux de remise.

① Définis def apply_discount(price, rate): et return price * (1 - rate).

② Mets apply_discount(1000, 0.2) dans sale_price et affiche-le avec print(f"Prix soldé : {sale_price}").

③ Appelle apply_discount(500, 0.1) directement dans print() pour confirmer que la même fonction peut être réutilisée avec différentes valeurs.

(L'explication apparaît une fois que tu auras exécuté le code correctement.)

Éditeur Python

Exécuter le code pour voir le résultat

Arguments par défaut et arguments nommés

Ajouter = valeur à un argument fixe une valeur par défaut utilisée quand l'appelant l'omet (argument par défaut).

Côté appel, nom_argument=valeur te permet de passer des valeurs par nom indépendamment de la position (arguments nommés). Les arguments par défaut sont conventionnellement placés à la fin de la liste des arguments pour que l'ordre n'ait pas d'importance.

Trois motifs d'appel et comment les paramètres sont remplis
def greet(name, greeting="Bonjour"):greet("Alice")name="Alice"greeting="Bonjour"(défaut appliqué)greet(name="Alice"greeting="Bonjour")greet("Léa", "Salut")name="Léa"greeting="Salut"(positionnel l'emporte)greet(name="Léa"greeting="Salut")greet(greeting="Bonsoir", name="Chloé")name="Chloé"greeting="Bonsoir"(ordre échangeable)greet(name="Chloé"greeting="Bonsoir")omispositionnelnomméexécuteexécuteexécute
# Donne une valeur par défaut à greeting
def greet(name, greeting="Bonjour"):
    return f"{greeting}, {name}"

print(greet("Alice"))                             # Bonjour, Alice
print(greet("Léa", "Salut"))                      # Salut, Léa
print(greet(greeting="Bonsoir", name="Chloé"))    # les arguments nommés peuvent être réordonnés
# Sortie : Bonsoir, Chloé

Écris une fonction qui formate des infos utilisateur.

① Définis def format_user(name, role="member"): et renvoie f"{name} ({role})".

② Affiche format_user("alice") (role omis).

③ Affiche aussi format_user("lea", "admin") (positionnel) et format_user(role="owner", name="chloe") (nommé).

Éditeur Python

Exécuter le code pour voir le résultat

Dans cet article, tu as appris les définitions de fonctions avec def, les valeurs de retour avec return, et les arguments par défaut et nommés. Quand tu utilises les fonctions avec aisance, la même logique peut être invoquée de n'importe où autant de fois que tu veux, et la lisibilité du code s'améliore considérablement.

QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Qu'affiche le code suivant ?
def f(x, y=10):
return x + y

print(f(3))

Question 2Quel appel utilise des arguments nommés ?
def greet(name, greeting="Hi"):
return f"{greeting}, {name}"

Question 3Que produit le code suivant ?
def g(x):
x + 1 # pas de return

result = g(10)
print(result)