From 4972cf161747c5e41ddf7092d7a8247dfc45610a Mon Sep 17 00:00:00 2001 From: Ekaitz Zarraga Date: Tue, 26 Nov 2019 15:43:30 +0100 Subject: lo que has aprendido: funciones --- src/04_funciones.md | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/04_funciones.md b/src/04_funciones.md index 47577d7..c99ef04 100644 --- a/src/04_funciones.md +++ b/src/04_funciones.md @@ -577,7 +577,8 @@ ayuda buscaría la ayuda de la función devuelta por el decorador (`run` en el ejemplo). Usando `@functools.wraps`[^functools] podemos resolver este problema. -[^functools]: Puedes leer por qué y cómo en la documentación oficial de python: +[^functools]: Puedes leer por qué y cómo en la documentación oficial de + python: La realidad es que los *decorators* son una forma muy elegante de añadir @@ -602,3 +603,35 @@ aquí tienes la receta: ## Lo que has aprendido + +Este capítulo puede que sea el más complejo de todos los que te has encontrado +y te encontrarás. En él has aprendido a declarar y a usar funciones, cosa +sencilla, y todos los conceptos importantes relacionados con ellas. Un +conocimiento que es útil en python, pero que puede ser extendido a casi +cualquier lenguaje. + +Partiendo del *scope*, has aprendido la diferencia entre lo *local* y lo +*global*. Después, has comprendido que las funciones en python son sólo un +valor más, como puede ser un `int`, y que pueden declararse en cualquier lugar, +lo que te abre la puerta a querer declarar funciones sencillas sin nombre, que +se conocen como funciones *lambda*. + +Una vez has aclarado que las funciones son ciudadanos de primera clase +(*first-class citizens*) ya estabas preparado para afrontar la realidad del +*scope* donde has tratado los contextos y cómo funcionan definiendo el concepto +del *scope léxico* que, colateralmente, te ha enseñado lo que es una *closure*, +un método para implementarlo. + +Pero no había quedado claro en su momento cómo funcionaban los argumentos de +entrada y las llamadas a las funciones, así que has tenido ocasión de ver por +primera vez lo que es un *callable* en python, aunque se te ha prometido +analizarlo en el futuro. + +El último detalle que has aprendido son los tipos de argumentos de entrada que +pueden recibir las funciones, *positional* y *keyword*, y cómo se utilizan en +todas sus posibles formas. + +Finalmente, para agrupar todo esto en un único concepto, se te han mostrado los +*decorators*, aunque de forma muy general, con el fin de que vieras que todo lo +que se ha tratado en este capítulo aparece en conceptos avanzados y es +necesario entenderlo si quieren llegar a usarse de forma eficiente. -- cgit v1.2.3