2010-10-07 11 views
7

En Python no parece entender la función de retorno. ¿Por qué usarlo cuando podría simplemente imprimirlo?Diferencia entre devoluciones e impresión en python?

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

maximum(2, 3) 

Este código me da 3. Pero el uso de return hace exactamente lo mismo.

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

print(maximum(2, 3)) 

¿Cuál es la diferencia entre los dos? Perdón por la mega pregunta de novato!

Respuesta

10

¿Qué harías si necesitas guardar el valor impreso? Have a look at good explanation in docs y 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 

También no es diferente de return declaración en cualquier otro idioma.

4

Para cálculos más complejos, debe devolver valores intermedios. Por ejemplo:

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

No se puede tener la impresión de maximum su resultado en ese caso.

+0

'mínimo de impresión (3, máximo (4, 4))' no funciona en la versión de OP :-( – eumiro

+0

@eumiro: no es que es exactamente el punto de la respuesta de RichieHindle? –

+0

@Tim: el ejemplo de Richie funciona con la segunda versión de OP. El mio no – eumiro

4

Recuerde que la línea de comando interactiva no es el único lugar donde se llamarán los métodos. Los métodos también se pueden llamar por otros métodos, y en ese caso print no es una forma utilizable para pasar datos entre ellos

0

Honestamente, depende de lo que necesite la función para hacer. Si la especificación de la función indica que imprimirá el término máximo, entonces lo que tiene está bien. Lo que generalmente sucede con un método como este es que el método debe devolver el valor real que es más grande. En el caso de que sean iguales, no importa qué valor se devuelve.

22

El Punto

retorno no es una función. Es una construcción de flujo de control (como construcciones ifelse). Es lo que le permite "tomar datos con usted entre llamadas a funciones".

Divida

  • print: da el valor para el usuario como una cadena de salida. print(3) daría una cadena '3' a la pantalla para que el usuario la vea. El programa perdería el valor.

  • return: da el valor al programa . Las personas que llaman de la función tienen los datos reales y el tipo de datos (bool, int, etc ...) return 3 tendrían el valor 3 en lugar de llamar a la función.

Ejemplo Tiempo

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 
Cuestiones relacionadas