Quelle est l'explication de base simple de ce qu'est l'instruction return, comment l'utiliser en Python ?
Et quelle est la différence entre elle et le print
déclaration ?
Quelle est l'explication de base simple de ce qu'est l'instruction return, comment l'utiliser en Python ?
Et quelle est la différence entre elle et le print
déclaration ?
Le site print()
écrit, c'est-à-dire "imprime", une chaîne de caractères dans la console. Le site return
permet à votre fonction de sortir et de rendre une valeur à son appelant. L'intérêt des fonctions en général est de recevoir des entrées et de renvoyer quelque chose. Le site return
est utilisée lorsqu'une fonction est prête à retourner une valeur à son appelant.
Par exemple, voici une fonction qui utilise à la fois print()
et return
:
def foo():
print("hello from inside of foo")
return 1
Maintenant vous pouvez exécuter un code qui appelle foo, comme ceci :
if __name__ == '__main__':
print("going to call foo")
x = foo()
print("called foo")
print("foo returned " + str(x))
Si vous exécutez ceci comme un script (par exemple un .py
) plutôt que dans l'interpréteur Python, vous obtiendrez le résultat suivant :
going to call foo
hello from inside foo
called foo
foo returned 1
J'espère que cela rend les choses plus claires. L'interpréteur écrit les valeurs de retour dans la console, je peux donc comprendre pourquoi quelqu'un pourrait être confus.
Voici un autre exemple de l'interpréteur qui le démontre :
>>> def foo():
... print("hello from within foo")
... return 1
...
>>> foo()
hello from within foo
1
>>> def bar():
... return 10 * foo()
...
>>> bar()
hello from within foo
10
Vous pouvez voir que lorsque foo()
est appelé à partir de bar()
1 n'est pas écrit dans la console. Au lieu de cela, il est utilisé pour calculer la valeur renvoyée par la commande bar()
.
print()
est une fonction qui provoque un effet secondaire (elle écrit une chaîne dans la console), mais l'exécution reprend avec l'instruction suivante. return
arrête l'exécution de la fonction et renvoie une valeur à la personne qui l'a appelée.
Pensez que l'instruction print provoque un effet secondaire il fait en sorte que votre fonction écrive un texte à l'utilisateur, mais il ne peut pas être utilisé par une autre fonction.
Je vais tenter de mieux expliquer cela à l'aide de quelques exemples et de quelques définitions tirées de Wikipedia.
Voici la définition d'une fonction selon Wikipedia
Une fonction, en mathématiques, associe une quantité, l'argument de la fonction, également appelé l'entrée, à une autre quantité, la valeur de la fonction, également appelée la sortie
Réfléchissez-y une seconde. Qu'est-ce que ça veut dire quand on dit que la fonction a une valeur ?
Cela signifie que vous pouvez réellement substituer la valeur d'une fonction par une valeur normale ! (En supposant que les deux valeurs soient du même type).
Pourquoi voulez-vous cela, demandez-vous ?
Qu'en est-il des autres fonctions qui peuvent accepter le même type de valeur qu'une fonction entrée ?
def square(n):
return n * n
def add_one(n):
return n + 1
print square(12)
# square(12) is the same as writing 144
print add_one(square(12))
print add_one(144)
#These both have the same output
Il existe un terme mathématique sophistiqué pour les fonctions qui ne dépendent que de leurs entrées pour produire leurs sorties : Transparence référentielle. Là encore, une définition de Wikipédia.
La transparence référentielle et l'opacité référentielle sont des propriétés de parties de programmes informatiques. Une expression est dite transparente sur le plan référentiel si elle peut être remplacée par sa valeur sans changer le comportement du programme.
Il peut être un peu difficile de comprendre ce que cela signifie si vous êtes novice en programmation, mais je pense que vous y arriverez après quelques essais. En général, vous pouvez faire des choses comme imprimer dans une fonction, et vous pouvez aussi avoir une déclaration de retour à la fin.
Rappelez-vous que lorsque vous utilisez return, vous dites essentiellement "Un appel à cette fonction équivaut à écrire la valeur qui est retournée".
Python insère en fait une valeur de retour pour vous si vous refusez d'insérer la vôtre, elle s'appelle "None", et c'est un type spécial qui signifie simplement rien, ou null.
En python, on commence à définir une fonction par "def" et généralement, mais pas nécessairement, on termine la fonction par "return".
Une fonction de la variable x est désignée par f(x). Que fait cette fonction ? Supposons que cette fonction ajoute 2 à x. Donc, f(x)=x+2
Maintenant, le code de cette fonction sera :
def A_function (x):
return x + 2
Après avoir défini la fonction, vous pouvez l'utiliser pour n'importe quelle variable et obtenir le résultat. Par exemple :
print A_function (2)
>>> 4
Nous pourrions simplement écrire le code de manière légèrement différente, comme par exemple :
def A_function (x):
y = x + 2
return y
print A_function (2)
Cela donnerait également "4".
Maintenant, nous pouvons même utiliser ce code :
def A_function (x):
x = x + 2
return x
print A_function (2)
Cela donnerait aussi 4. Voyez, que le "x" à côté de return signifie en fait (x+2), et non x de "A_function(x)".
Je suppose qu'à partir de ce simple exemple, vous comprendrez la signification de la commande return.
return
signifie "produire cette valeur à partir de cette fonction".
print
signifie "envoyer cette valeur à (généralement) stdout".
Dans le REPL Python, le retour d'une fonction est affiché à l'écran par défaut (ce n'est pas tout à fait la même chose que print).
C'est un exemple d'impression :
>>> n = "foo\nbar" #just assigning a variable. No output
>>> n #the value is output, but it is in a "raw form"
'foo\nbar'
>>> print n #the \n is now a newline
foo
bar
>>>
C'est un exemple de retour :
>>> def getN():
... return "foo\nbar"
...
>>> getN() #When this isn't assigned to something, it is just output
'foo\nbar'
>>> n = getN() # assigning a variable to the return value. No output
>>> n #the value is output, but it is in a "raw form"
'foo\nbar'
>>> print n #the \n is now a newline
foo
bar
>>>
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
Duplicata possible de En quoi le retour de la sortie d'une fonction diffère-t-il de son impression ?