diff options
author | Ekaitz Zarraga <ekaitz@elenq.tech> | 2019-11-26 15:43:30 +0100 |
---|---|---|
committer | Ekaitz Zarraga <ekaitz@elenq.tech> | 2019-11-26 15:43:30 +0100 |
commit | 4972cf161747c5e41ddf7092d7a8247dfc45610a (patch) | |
tree | bf6c5b961a0e2faa356dcebfaa62ab597f428919 /src | |
parent | 678e0c8f1b1f96f5184e8934c52c2fec62be8d9c (diff) |
lo que has aprendido: funciones
Diffstat (limited to 'src')
-rw-r--r-- | src/04_funciones.md | 35 |
1 files changed, 34 insertions, 1 deletions
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: <https://docs.python.org/3/library/functools.html#functools.wraps> 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. |