Problème python return

Résolu/Fermé
Bimzounetttt - 12 mars 2019 à 20:45
 Bimzounetttt - 13 mars 2019 à 07:16
Bonjour, j'ai un problème avec l'instruction return, même quand je recopie un code d'un tuto cela ne marche pas...

par exemple voici un code :
def sum():
result = 5 +4
return result

sum
print(result)

et ça me met cette erreur

Traceback (most recent call last):
File "wtfcabug.py", line 5, in <module>
print(result)
NameError: name 'result' is not defined


Là je suis vraiment coincer j'ai besoins de votre aide merci

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
12 mars 2019 à 22:01
'lut,
tu sembles ne pas avoir du tout compris comment marche les valeurs de retour, et l'appel de fonction non plus...
En mettant juste
sum
, tu obtient la fonction elle-même sous forme d'objet (
<function sum at 0xblablabla>
). À ton niveau ça ne t'es pas utile.
Pour exécuter ta fonction il faut suivre le nom d'une paire de parenthèses avec les paramètres. Comme il n'y en a pas, on met des parenthèses vides:
sum()
.
Cette instruction
sum()
est évaluée puis contiendra la valeur que la fonction a mis dans son
return
, ou
None
si pas de
return
. Cette valeur peut être utilisée dans une expression comme un paramètre de fonction ou une addition par exemple:
def nombre():
    return 1 + 2
print(nombre() + 3)  # "6"

nombre()
sera évaluée, puis comme la fonction retourne 3 (après évalution de
1 + 2
), on a l'expression intermédiaire
3 + 3
, qui donne 6, ce que
print
affiche.

Ce que tu essaies de faire ne va pas car tu pars du principe que les variables utilisées dans les fonctions sont accessibles en dehors. C'est le cas dans certains langages tels que des BASICs, mais pas en Python. Quand une fonction se termine, toutes ses variables locales (c-à-d utilisées uniquement dedans la fonction) sont détruites, on ne peut récupérer que la valeur de retour en utilisant la fonction dans une expression, dont l'assignation de variable ; en continuant l'exemple précédant
mavariable = nombre()
# mavariable vaut 3
print(mavariable + 3)  # "6" aussi

Mais ça c'est en dehors de la fonction nombre.
2
Bimzounetttt
13 mars 2019 à 07:16
Merciiii, j'avais effectivement oublié les parenthèse et j'ai maintenant compris comment fonctionnait le return.
0