return

Qu'est-ce que l'instruction return en Python ?

Qu'est-ce que l'instruction return ?

L'instruction return permet à une fonction de renvoyer une valeur quand elle est appelée. Sans cette instruction, le résultat de la fonction reste à l'intérieur de celle-ci.

def saluer(nom):
    return f"Bonjour {nom} !"

print(saluer("Patrick"))  # Bonjour Patrick !
PYTHON

Comment récupérer la valeur renvoyée par une fonction ?

Patrick est parti faire ses courses et aimerais avoir le total de son panier. Ça tombe bien il a commencé à apprendre les fonctions en Python 😃.

def calculer_total(prix):
    return sum(prix)

prix_patrick = [3.5, 2.0, 4.5]

# On stocke la valeur renvoyée dans une variable
total = calculer_total(prix_patrick)
total_reduit = total * 0.9
print(total_reduit)  # 9.0

# On utilise directement l'appel dans une expression
print(calculer_total(prix_patrick) * 0.9)  # 9.0

# On passe la valeur renvoyée à une autre fonction
print(round(calculer_total(prix_patrick)))  # 10

# On l'utilise dans une condition
if calculer_total(prix_patrick) > 5:
    print("Livraison offerte !")  # Livraison offerte !
PYTHON
Un instant

Créez un compte pour exécuter ce code

Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.

calculer_total(prix_patrick) peut être utilisé partour comme on le ferait avec une valeur classique. Il est possible d'assigner le résultat à une variable si vous en avez besoin à plusieurs endroits. Si on n'assigne rien, le résultat sera perdu.

Quelle différence entre print et return ?

La question et la confusion la plus courante quand on débute (on y passe tous ☺️).

def afficher_total(prix):
    print(sum(prix))

prix_patrick = [3.5, 2.0, 4.5]

total = afficher_total(prix_patrick)  # 10.0
print(total)  # None
print(total * 0.9)  # TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'
PYTHON

Le total s'affiche bien dans le terminal mais il faut bien savoir pourquoi dans ce cas il s'affiche :

  • total = afficher_total(prix_patrick), à ce moment la fonction s'exécute, et comme la fonction contient print(sum(prix)), elle va afficher le prix

  • la fonction se termine sans return, Python renvoie alors None, c'est ce qui est assigné à la variable total

  • print(total) affiche le contenu de la variable, c'est-à-dire None

  • total * 0.9 revient à écrire None * 0.9, ce qui explique la TypeError

Le 10.0 affiché vient donc du print() exécuté dans la fonction.

Que renvoie une fonction sans return ?

Nous venons de le voir à l'instant : une fonction sans return renvoie None. Un return seul aura le même effet, tout comme un return None.

def sans_return():
    pass

def return_seul():
    return

def return_none():
    return None

print(sans_return())  # None
print(return_seul())  # None
print(return_none())  # None
PYTHON
Un instant

Créez un compte pour exécuter ce code

Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.

Bravo, tu es prêt à passer à la suite

Rechercher sur le site

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.