Bienvenido de nuevo.
En este video, quiero hablar sobre un concepto importante, que es el retorno.
Es una palabra clave en Python que veremos mucho cuando trabajemos con funciones.
Así que echemos un vistazo.
Si digo que quiero crear una función llamada suma, que, por cierto, ya existe en Python, pero vamos a
crear la nuestra propia y voy a decir número uno por número uno.
Y número dos, bueno, nuestra función de suma va a sumar nueve uno más el número dos, función agradable y simple.
Ahora, si ejecuto algunos con los números cuatro y cinco, ¿adivinen qué va a pasar?
Voy a pegarle a correr.
Y no pasa nada, lo que quiero decir, puede que no te sorprenda, porque no estamos imprimiendo nada, ¿verdad?
Pero, ¿y si ejecuto imprimir aquí?
¿Cambiará esto?
Vamos a ver.
Hmm, no tengo ninguno.
¿Es eso lo que esperabas y no hemos visto ninguno antes?
Bien, quiero decir, ¿recuerdas cuando teníamos una lista, digamos uno a tres, y luego hicimos algo
como aclararlo?
En nuestro Ed, nos dio esta pequeña flecha y dijo ninguno, y hablamos sobre esta idea de en listas,
algo como borrar cambia la lista real y borra todo y vacía la lista.
Pero no devuelve una nueva lista.
Simplemente modifica la lista existente, pero en su lugar simplemente no nos devuelve ninguno.
Bueno, las funciones son así.
Siempre tienen que devolver algo.
Y cuando no devuelven nada como no hay palabra clave de retorno aquí, automáticamente devuelve ninguno.
Entonces, si no tenemos algo como regresar aquí, siempre no devolverá nada.
Pero si agregamos retorno, dirá tan pronto como lleguemos, como, oye.
Quiero que salgas de esta función, y cuando salgas de esta función, quiero que devuelvas lo que sea que nos dé
esta expresión, si hago clic en ejecutar.
Tengo nueve.
Si cambiamos esto a 10.
Más cinco, obtenemos 15.
Y esta es una buena regla general con funciones, porque las funciones pueden hacer dos cosas, ¿verdad?
Uno, puede devolver algo.
Entonces, al final de la función, lo que sea, después de que se ejecute la función, devolvemos
algo Nunn o algún tipo de valor, algún tipo de tipo de datos, o podemos tener una función que no
devuelve nada pero quizás modifica alguna cosa.
Entonces, por ejemplo, podría imprimir.
Hola.
Y si hubiera corrido hasta aquí.
No devuelvo ninguno porque no tengo esa declaración de devolución, sin embargo, mi función hace algo que modifica.
Bueno, el aspecto de este impuesto, cierto, un príncipe alto para nosotros.
Entonces, una función modifica algo en nuestro programa o devuelve algo.
Y este es un tema bastante avanzado que abordaremos más
adelante cuando hablemos de programación funcional, pero una buena regla general con las funciones es que una función debería hacer una cosa realmente bien.
Y normalmente una función debería devolver algo.
Ahora, esto no significa que cualquier función que quizás haga varias cosas o cualquier función que no devuelva
algo sea mala, pero en general es una buena práctica hacer que su código sea simple y legible, tener
estas dos reglas.
Por ejemplo, aquí, si tengo print y además, will, esta función está haciendo varias cosas.
Se preocupa por la impresión y también por algo.
Y la definición de esta función se llama algunos.
Quiero decir, si no lo supiera o no vi esto y todo lo que hice fue ejecutar un poco, creo que tener
una impresión alta sería sorprendente porque el nombre realmente no describe lo que hace.
Quiero decir, espero que esto sea en algún momento.
¿Por qué mi programa dice hola?
Entonces, ¿queremos asegurarnos de que nuestra función hace una cosa y solo una cosa realmente?
Bueno, porque como veremos más adelante, podemos combinar y ejecutar diferentes funciones juntas.
Y luego también queremos asegurarnos de que devolvemos algo, porque de esta manera, lo que podemos hacer
es realmente asignar este valor de retorno a una variable.
Por ejemplo, puedo decir que el total es igual a unos 10.
Cinco.
Y debido a que esta función devuelve algo y cuando se hace, la ejecución tendrá 15 como valor, eso es
lo mismo que estamos haciendo aquí.
Y aquí está la parte interesante ahora que puedo ejecutar tal vez unos 10.
Más total.
Ahora, repasemos esto uno por uno.
Defino mi función, el intérprete de Python va a decir, está bien, sé lo que es ahora que lo
has definido.
Lo voy a guardar en la memoria.
Continuará, continuará hasta la línea siete.
Y va a decir, oye, quiero una variable total y quiero que esa variable total sea igual a unos 10
cinco.
Y antes de que asignemos algo a Python total, ¿el intérprete dirá algo de qué?
Algunos de nuevo.
Oh, lo recuerdo aquí.
Está en la memoria, está bien, en algunos casos le daré los argumentos 10 y cinco.
Entonces va a ejecutar esa función.
Tan pronto como terminemos con este paréntesis de cierre, se irá al sol.
Va a decir, oye, nadie va a igualar diez.
Oye, el número dos va a ser igual a cinco.
Ahora vamos a la línea dos y va a decir, oye, quiero que sumes diez más cinco porque sé cuáles son
estas variables.
Y luego, una vez que hayas terminado con eso y esto se convierta en 15, quiero que regreses.
Entonces, el intérprete de Python, finalmente, cuando termine de llamar a algunos, dirá, oye, asigne el valor
de 15 a la variable total y luego pasará a la siguiente línea.
Oye, quiero imprimir algo.
¿Qué quieres imprimir?
Bueno, quiero imprimir esto.
Va a decir, oye, lo que algunos sé lo que hay en esto.
Lo tengo en la memoria.
Y de nuevo, va a decir diez.
Y luego el siguiente argumento será total.
Oye, ¿cuál es el total?
Déjame ir a la memoria y averiguarlo.
Oh, son 15.
Entonces es como decir 50.
Y este es el poder de las funciones, cierto, puedo devolver cosas y asignarlas a variables y llamarlas
así y puedo seguir ejecutándolas si quiero.
Si quiero hacer esto aún más simple, puedo ir.
Algunos en lugar del total estarán aquí.
Y mira eso ahora.
Lo tengo todo en una línea y si hago clic en ejecutar.
Una vez más, todavía funciona.
Está bien, pero ¿y si hacemos algo como esto?
¿Qué pasa si digo definir algunos y luego digo definir dentro de aquí otra función y esta función toma el número
uno y el número dos?
Y aquí, finalmente regresamos el número uno y el número dos.
Hmm, probemos esto.
¿Qué piensas tú que sucederá?
Bueno, primero, digamos que el total es igual a 10 más 20.
Y luego voy a imprimir el total.
Si hago clic, corre.
No consigo ninguno.
Ahora bien, ¿por qué es eso y esto debería ser obvio para ti, porque aquí estoy diciendo, oye, quiero que
definas algo y qué vamos a hacer con la función?
Bueno, dentro de aquí, voy a definir otra función.
Pero esta declaración de devolución en realidad no se ejecuta.
Bien, porque todo lo que estamos haciendo dentro de este bloque, este bloque de código.
En esta parte, estamos definiendo la función, pero nunca llamamos a otra función.
Entonces esto devuelve ninguno.
Y hemos perdido la capacidad de llamar a esta función.
Entonces, ¿cómo podemos resolver esto?
Una forma es regresar, ¿verdad?
Entonces, al final aquí, tenemos que asegurarnos de que la sangría sea correcta y vamos a devolver otra función.
Así que agreguemos return y veamos qué sucede aquí.
Si hago clic, corre.
Muy bien, obtengo esta función ahora, por lo que el total será igual a esta función que devolvimos y está en la
memoria.
Está bien, pero no obtengo el resultado que quiero, ¿verdad?
¿Y por qué es eso?
Porque si bien no llamamos a esta función, hay algunas formas en que podemos hacer esto.
Podemos darle los parámetros o los argumentos aquí.
Entonces digamos 10, 20.
Y si hago clic, corro.
Tengo 30 o si queremos quedarnos lo que sea que le demos aquí, simplemente puedo decir otro funk.
Entonces, si le damos el número uno y el número dos y hago clic en ejecutar.
Oye, mira eso, obtengo 30.
Ahora, este video puede que tenga que verlo una y otra vez, porque estira un poco
su mente y, para ser honesto, esta función no es muy buena porque está bien, es muy confusa.
Su función debe ser fácil de entender.
Por lo tanto, es posible que queramos cambiar esto un poco, tal vez en lugar de tener los mismos nombres de parámetros
solo para aclararlo.
Quizás podamos decir uno y dos.
Y luego aquí lo hacemos.
Y uno más y dos para aclarar que cuando devolvemos esta otra función, estoy usando los parámetros, número uno y
número dos que llamamos aquí.
Porque a esta definición de función realmente no le importa cuáles son estas cosas.
Solo le importa cuando se llama a otra función.
Ahora, si necesita pausar el video y mirar esto y tal vez practicarlo un poco,
es completamente comprensible.
Pero quería mostrarte el poder del retorno.
Puede tener funciones anidadas como lo haría con los condicionales, pero debe tener cuidado de
que su función devuelva algo, de lo contrario, no devolverá ninguno.
Y la mayoría de las veces querrá devolver algo de una función para que podamos hacer algo como esto
en el que lo asignamos a una variable para poder usarlo más adelante en nuestros programas.
Nos vemos en el próximo.
Una última cosa, una palabra clave de retorno sale automáticamente de la función de modo que aquí, si agregué otra
pieza de código como imprimir, ¿hola?
O tal vez incluso tenga la devolución cinco aquí, verá que todavía es válida, pero si ejecuto esto.
Todavía obtengo 30 porque el intérprete nunca llega a la línea cinco y seis, porque tan pronto como
devolvemos algo de una función, sale de esa función.
Y la razón por la que esta parte no sale de la función es porque, recuerde, dentro de esta función,
estamos definiendo.
Entonces, en realidad, no estamos ejecutando esta parte.
Solo decimos, oye, cuando vemos que aparece otra función en nuestro código, sabemos cuál es, pero no
la vamos a ejecutar.
Entonces se verá así.
Y tan pronto como vea la declaración de retorno, cuando se enfríe, dirá,
está bien, salgo de esta función con este valor.
Solo un pequeño aviso.