Python, ¿que hace return?

B

Hola, ¡espero que te encuentres muy bien!

Estoy estudiando las funciones en Python y la keyword 'return', aunque sea sencilla, me esta costando entender como funciona realmente y que utilidad tiene. Uso este código como ejemplo:

def suma(numero1=20, numero2=30):
    resultado = numero1 + numero2
    return resultado

print(suma())

Bien, resultado guardara el valor de la suma y lo ¿devolverá? Eso es en lo que estoy confuso, ¿que significa que devolverá el valor a resultado? ¿Simplemente para imprimirlo en pantalla como si hiciéramos un print()?

En otras situaciones he visto que simplemente se escribe 'return' sin nada mas, ¿porque es esto?

Ante todo, gracias.

Ranthas

Return es una palabra clave del lenguaje que indica que la función termina en ese punto, retornando el valor pertinente. En el caso de tu ejemplo, la función suma terminaría su ejecución al llegar a la instrucción return, y retornaría el valor contenido en la variable resultado al contexto del procedimiento/función que ha invocado a suma.

Usando tu ejemplo, al hacer print(suma()) pasa lo siguiente:

  • Se invoca el procedimiento print(), usando como parámetro la expresión suma(). Al no tener parámetros, se toman por defecto los valores numero1 = 20 y numero2 = 30.
  • Ahora se invoca la función suma, desde el contexto de print(), en un nuevo contexto. Se ejecutan todas sus instrucciones y al llegar al return, devuelve el valor de resultado (50 en este caso) al contexto que lo ha invocado, es decir, a print().
  • En este momento, es como si tuvieses este codigo:
print(50)

Grosso modo, return es la manera que tiene una función de saber que ha terminado su ejecución y que debe enviar el valor que ha obtenido al contexto de la expresión que la ha invocado.

Cuando te encuentras return sin nada, te lo encuentras en procedimientos. Es una manera de abortar la ejecución del procedimiento, es decir, que se interrumpa y no siga ejecutandose el resto de instrucciones.

Para más información:

https://book.pythontips.com/en/latest/global&return.html

5 1 respuesta
B

Suerte cuando llegues a "yield" :P

2
spymv

Creo que si ejecutas un código como éste verás claramente la diferencia de comportamiento. Return sirve para comunicación de la función con el exterior de la misma/resto del programa, devolver varios valores, etc... Te animo a leer un poco de documentación.

def funcion_print():
    print ("Escribo en pantalla")

def funcion_return():
    return "Devuelvo un valor"

fp = funcion_print()
fr = funcion_return()
print ("Ahora vemos la diferencia de comportamiento")
print (fp)
print (fr)
1 respuesta
B

#2 #4 Perfecto, ¡gracias a los dos lo entendí!

He de acostumbrarme a leer mas documentación, cuando no encuentro lo que busco específicamente me frustro :laughing:. Ahi le veo la gracia.

¡Gracias, de nuevo!

Mortium

No es por sonar borde, pero enserio un hilo creado para preguntar que es un return?

Mas que darte el pescado te enseñare a pescar.

La mayoria de tareas del programador, sobre todo cuando te metes en nuevos proyectos es la investigacion.

Toda pregunta que tengas debes preguntar a google y hacerte amigo de stackoverflow.

Paso a paso, hormiga a hormiga.

4 respuestas
B

#6 No suena borde tranquilo, se que cuando cuando uno tiene experiencia ver preguntas tan básicas (que 100% estarán contestadas en Google) llega a irritar.

Te aseguro que he buscado, si vieras todas las pestañas que tengo abiertas jajaja, simplemente con lo que he leído no me ha quedado claro del todo. Mejor preguntar y entenderlo a la perfección.

1 1 respuesta
A

#6 Que diferencia hay en preguntar en StackOverflow y aquí?

Su post no es un resuélveme los deberes, ha explicado todas las dudas que tiene respecto a ello y cual es su hipótesis. A veces nos "quejamos" sin darnos cuenta de que hay otros que no saben lo mismo

3 respuestas
isvidal

#8 Este tipo de dudas en StackOverflow no tienen cabida

Soltrac

#6 a mi me parece una buena pregunta.

Ha investigado, no ha encontrado solución y pregunta en el foro.

No todo va a ser clean code y los últimos frameworks, todo tiene cabida.

Para #1 , me alegro q lo hayas entendido ya

1 2 respuestas
Mortium

#8 Punto numero 1: No digo que haga un hilo en stack overflow si no que lo busque ahi, la mayoria de cosas ya estan preguntadas alli.

Punto numero 2, solo intento ayudarle para su futuro y como manejarse.

Punto numero 3, el quejas eres tu, yo solo le estoy ayudando.

Fin

Mortium

#7 Tienes que mejorar como haces las busquedas y leer documentaciones, eso sera la principal tarea de todo desarrollador, pero bueno a base de practica, yo te aconsejaria hacerte algun curso de udemy, ya que este tipo de cosas basicas te las explican muy bien.

Saludos.

Mortium

#10 Solo intento que mejore el chaval, prefiero guiar caminos que dar cosas hechas

B

#6 #8 #10 ¿Porque discuten? Todo esta solucionado, ¡gracias por sus contribuciones!

1 comentario moderado
B

#15 No soy programador, quiero ser programador. Es muy diferente. Dios nos libre de las personas que creen los demás debemos saber lo que ellos saben.

Tema cerrado

Usuarios habituales