¿Diferencia entre devoluciones e impresión en python?

En python no parece estar entendiendo la función de retorno. ¿Por qué usarlo cuando podría simplemente imprimirlo?

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 usando 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)) 

Entonces, ¿cuál es la diferencia entre los dos? Lo siento por la mega noob pregunta!

El punto

El retorno no es una función. Es una construcción de flujo de control (como if else construcciones). Es lo que le permite “llevar datos entre llamadas de función”.

Descompostura

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

  • return : da el valor al progtwig . Las personas que llaman a la función luego tienen los datos reales y el tipo de datos (bool, int, etc …) y el valor 3 se pone en lugar de donde se llamó a la función.

Ejemplo de 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 

¿Qué haría si necesita guardar el valor impreso? Echa un vistazo a la buena explicación en 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 

Tampoco es diferente de la statement de return en cualquier otro idioma.

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

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

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

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

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 ocurre con un método como este es que el método debe devolver el valor real que es mayor. En el caso de que sean iguales, no importa qué valor se devuelva.