2016-05-20 8 views
2

Ich benutze Python 2.7.11 unter Debian Linux.Python 2.7.11: Warum funktioniert ein Funktionsaufruf für eine Funktion, aber nicht für eine andere?

Ich habe zwei Funktionen, eine, die genau wie erwartet mit einem normalen Funktionsaufruf funktioniert, und eine andere, die gut genug funktioniert, bis auf die Tatsache, dass ein normaler Funktionsaufruf bei dieser zweiten Funktion nicht funktioniert; Ich muss einen Ausdruck vor die Funktion legen, um es zum Laufen zu bringen.

1) Die erste Funktion, wie bei einem normalen Funktionsaufruf erwartet ausführen:

def print_me(string): 

    print string 

    print_me("I am a string") 

2) Die zweiten Funktion, die nicht mit einem normalen Funktionsaufruf funktioniert:

def fruit_color(fruit): 

    fruit = fruit.lower() 
    if fruit == 'apple': 
     return 'red' 
    elif fruit == 'banana': 
     return 'yellow' 
    elif fruit == 'pear': 
     return 'green' 
    else: 
     return 'Fruit not recognized' 

3) Ein normaler Funktionsaufruf, dh fruit_color ('apple'), funktioniert nicht. Ich muss stattdessen Druck setzen vor der Funktion, um es an die Arbeit:

print fruit_color('apple') 

4) Nun habe ich (hoffentlich) erklärt mir kurz und bündig genug, werde ich meine Frage neu formulieren: Warum das ist Funktionsaufruf funktioniert für die Funktion print_me, aber nicht für die Funktion fruit_color?

+0

'print' druckt es,' return' druckt es nicht, daher müssen Sie den Rückgabewert explizit ausdrucken. – poke

Antwort

4

print_me druckt tatsächlich eine Zeichenfolge, die Sie sehen. gibt nur einen Zeichenfolgenwert zurück, den Sie dann ausführen könnten, was Sie wollen - weisen Sie ihn einer Variablen zu, manipulieren Sie ihn oder, in diesem Fall, drucken Sie ihn, indem Sie print aufrufen.

2

Weil fruit_color Funktion nur String zurückgibt. Es wird nicht gedruckt. Sie müssen es mit print aufrufen, wenn Sie den von dieser Funktion zurückgegebenen Wert drucken möchten.

3

Druck- und Rückgabefunktionen sind insgesamt unterschiedlich.

def print_me(string): 
    print string 

print_me('abc') 

Ausgabe:

abc

def return_me(string): 
    return string 

return_me('abc') 

OUTPUT:

Keine Ausgabe

Da Druckfunktion in Python druckt das Argument übergeben. while, return-Funktion wird das Argument zurückgeben. Damit können wir es bei Bedarf woanders im Programm verwenden.

1

Aha! Jetzt habe ich es verstanden! Für das, was ich tat, würde ich es besser gewesen Druck im Inneren der fruit_color Funktion zu nutzen, so dass ich einfach es nennen könnte:

def fruit_color(fruit): 
     fruit.lower() 
     if fruit == 'apple': 
      print 'green' 

    fruit_color('apple') 

Danke an alle!

Verwandte Themen