Passer au contenu principal
eLearner.app
Module 5 · Leçon 1 sur 417/36 dans le cours~12 min
Leçons du module (1/4)

def et return

Une fonction est un bloc de code réutilisable : vous la définissez une fois avec def, puis vous l'appelez autant de fois que vous le souhaitez. Les fonctions rendent le code modulaire, testable et auto-documenté.

Syntaxe de base

Python
def saluta(nome):
    return f"Ciao, {nome}!"

saluta("Ada")     # 'Ciao, Ada!'
  • def introduit la fonction, suivie du nom et des paramètres entre parenthèses.
  • Le : ouvre le bloc indenté.
  • return renvoie une valeur à l'appelant et termine la fonction.

return explicite vs None implicite

Si vous n'écrivez pas return, la fonction renvoie None de manière implicite :

Python
def stampa_e_basta(x):
    print(x)

risultato = stampa_e_basta("ciao")
# prints 'ciao'
print(risultato)   # None

Un simple return (sans valeur) renvoie également None, mais peut servir de sortie anticipée :

Python
def primo_pari(nums):
    for n in nums:
        if n % 2 == 0:
            return n
    return None   # explicit: communicates "not found"

Plusieurs valeurs ? Renvoyer un tuple

Python n'a pas de "paramètres de sortie" : pour renvoyer plusieurs choses, renvoyez un tuple (souvent déballé par l'appelant).

Python
def divisione_resto(a, b):
    return a // b, a % b

quoziente, resto = divisione_resto(17, 5)
# 3, 2

Docstring : documentation intégrée

La première chaîne à l'intérieur de la fonction est le docstring : elle apparaît dans help(fn) et comme info-bulle (tooltip) dans les IDE.

Python
def area_cerchio(raggio):
    """Calcola l'area di un cerchio dato il raggio."""
    import math
    return math.pi * raggio ** 2

Portée : variables locales

Les variables définies à l'intérieur d'une fonction sont locales : elles n'existent pas à l'extérieur.

Python
def f():
    x = 10
    return x

f()    # 10
x      # NameError: name 'x' is not defined

Les fonctions renvoient toujours quelque chose

En Python, si une fonction ne déclare pas explicitement une instruction return ou présente un return vide, elle renverra implicitement la valeur spéciale None. Il n'y a pas de fonctions qui ne renvoient pas de valeur.

À vous de jouer

Exercice#python.m5.l1.e1
Tentatives : 0Chargement…

Définissez une fonction `double(x)` qui renvoie `x * 2`. Appelez-la ensuite avec 7 et assignez le résultat à `result`. Évaluez `result`.

Chargement de l'éditeur…
Afficher l'indice

Utilisez return x * 2.

Solution disponible après 3 tentatives

Exercice de révision

Exercice#python.m5.l1.e2
Tentatives : 0Chargement…

Définissez `min_max(nums)` qui renvoie un tuple `(minimum, maximum)`. Appelez-la sur `[3, 1, 4, 1, 5, 9, 2, 6]` et déballez le résultat dans `mn, mx`. Évaluez `(mn, mx)`.

Chargement de l'éditeur…
Afficher l'indice

return min(nums), max(nums)

Solution disponible après 3 tentatives

Défi supplémentaire

Exercice#python.m5.l1.e3
Tentatives : 0Chargement…

Définissez une fonction `is_palindrome(text)` qui renvoie `True` si la chaîne d'entrée est égale à sa version inversée, et `False` sinon. Testez la fonction avec `is_palindrome("radar")` comme dernière expression.

Chargement de l'éditeur…
Afficher l'indice

Utilisez le tranchage text[::-1] pour inverser la chaîne et la comparer avec le texte d'origine.

Solution disponible après 3 tentatives