2010-10-07 16 views
7

In Python verstehe ich die Rückgabe-Funktion nicht. Warum sollte ich es benutzen, wenn ich es einfach ausdrucken könnte?Unterschied zwischen Rückgabe und Drucken in Python?

def maximum(x, y): 
    if x > y: 
     print(x) 
    elif x == y: 
     print('The numbers are equal') 
    else: 
     print(y) 

maximum(2, 3) 

Dieser Code gibt mir 3. Aber mit Return gibt es genau dasselbe.

def maximum(x, y): 
    if x > y: 
     return x 
    elif x == y: 
     return 'The numbers are equal' 
    else: 
     return y 

print(maximum(2, 3)) 

Also was ist der Unterschied zwischen den beiden? Entschuldigung für die Mega-Noob-Frage!

Antwort

10

Was würden Sie tun, wenn Sie den gedruckten Wert sparen möchten? Have a look at good explanation in docs und cf .:

>>> def ret(): 
    return 42 

>>> def pri(): 
    print(42) 


>>> answer = pri() 
42 
>>> print(answer)   # pri implicitly return None since it doesn't have return statement 
None 
>>> answer = ret() 
>>> answer 
42 

Es ist auch nicht anders als return Aussage in einer anderen Sprache.

4

Für komplexere Berechnungen müssen Sie Zwischenwerte zurückgeben. Zum Beispiel:

print minimum(3, maximum(4, 6)) 

können Sie nicht maximum Druck haben das Ergebnis in diesem Fall.

+0

'Druck Minimum (3, maximal (4, 4))' nicht :-( – eumiro

+0

@eumiro in OP-Version funktioniert: Ist das nicht genau die Punkt von RichieHindles Antwort? –

+0

@Tim: Richies Beispiel arbeitet mit der zweiten OP-Version. Meins nicht. – eumiro

4

Denken Sie daran, dass die interaktive Befehlszeile nicht der einzige Ort ist, an dem Methoden aufgerufen werden. Methoden können auch mit anderen Methoden aufgerufen werden, und in diesem Fall print ist keine brauchbare Möglichkeit, Daten zwischen ihnen zu übergeben

0

Ehrlich, es hängt davon ab, was Sie die Funktion zu tun haben. Wenn die Funktionsspezifikation angibt, dass der maximale Ausdruck gedruckt wird, ist das, was Sie haben, in Ordnung. Bei einer solchen Methode passiert es im Allgemeinen, dass die Methode den tatsächlichen Wert zurückgibt, der größer ist. Wenn sie gleich sind, spielt es keine Rolle, welcher Wert zurückgegeben wird.

22

The Point

Rückkehr ist keine Funktion. Es ist ein Kontrollflusskonstrukt (wie ifelse Konstrukte). Es ermöglicht Ihnen, "Daten zwischen Funktionsaufrufen mitzunehmen".

Pause nach unten

  • print: gibt den Wert an die Benutzer als Ausgabestring. print(3) würde eine Zeichenfolge '3' an den Bildschirm für den Benutzer anzeigen geben. Das Programm würde den Wert verlieren.

  • return: gibt den Wert Programm. Aufrufer der Funktion haben dann die tatsächlichen Daten und den Datentyp (bool, int, etc ...) return 3 würde den Wert 3 an Stelle der Funktion aufgerufen haben.

Beispiel Zeit

def ret(): 
    return 3 

def pri(): 
    print(3) 

4 + ret() # ret() is replaced with the number 3 when the function ret returns 
>>> 7 
4 + pri() # pri() prints 3 and implicitly returns None which can't be added 
>>> 3 
>>> TypeError cannot add int and NoneType 
Verwandte Themen