[Py-MAD] Don’t Use Recursion In Python Any More,Python Closure — A Pythonic technique you must know
Jesus Cea
jcea at jcea.es
Tue Jan 5 15:42:06 CET 2021
On 2/1/21 23:02, Javier Luna Molina wrote:
> Respondo que las tertulias nunca me vienen bien de horario y quería
> participar de alguna forma, así que allá que voy!
Se ha comentado ir variando el día y hora de las tertulias para ampliar
las opciones. Siendo reuniones frecuentes (semanales), perderse algunas
no debería ser grave. El mayor problema es que ahora mismo se está
creando una cierta continuidad en la asistencia, que puede perderse si
nos desperdigamos en diferentes horarios. Tal vez se pueda pensar en
tener varias tertulias independientes. No sé.
> Según entiendo, se trata de una forma de implementar una solución
> iterativa equivalente a previas soluciones recursivas, pero creo que
> usar closures en este contexto es intentar meterlas con calzador en la
> discusión "recursivo vs iterativo"... ¿Qué tienen de malo los bucles o
> los generadores?
La propuesta del artículo (convertir funciones recursivas a closures) me
parece confusa, compleja e irrelevante, pero lo que me ha interesado
mucho del artículo es el uso de "closures" para mantener estado entre
llamadas a una función. Poder pasar por ahí una función con estado
persistente me parece una idea valiosa para añadir a mi arsenal de
programador. La idea de especializar una función y utilizar esa
especialización después me parece una idea valiosa.
Es cierto que en algunos casos se pueden usar iteradores y generadores,
pero no siempre. En algunos caso se puede usar "functools.partial()",
como explica Chema Cortés en otro mensaje, pero no siempre (no hay
estado persistente). Lo normal y obvio sería usar objetos, pero son
pesados y "verbose".
Utilizar closures es una herramienta más al arsenal. Bastante general e
interesante, pero algo confusa. Para dosificar.
Que sea tan eficiente, es un plus adicional. Como persona interesada en
la teoría e implementación del lenguaje, estas cosas me interesan mucho.
Los "closures" no son algo nuevo. Es como funcionan los
iteradores/generadores y quien haya programado decoradores se ha comido
"closures" sí o sí. Generalizar el concepto, que es para lo que me ha
servido el artículo, me parece valioso más allá de si es mejor hacer
algo concreto de forma recursiva o iterativa, que no deja de ser un
ejemplo concreto de uso de una idea general.
> De vuelta al artículo, he echado de menos una mayor investigación sobre
> la recursividad, pego unos links acerca de artículos que creo que pueden
> ser de interés:
Como ya he explicado, lo que yo he extraído del artículo es el uso de
"closures" como mecanismo de asociar estado persistente a una función.
El autor lo usa como forma de evitar recursión en un problema concreto
(que no requiere recursión en absoluto, se puede resolver de forma más
claras), pero a mí me ha parecido confuso y proclive a errores, además
de innecesario en ese ejemplo concreto. Pero me he quedado con la idea
general, que sí que me parece interesante.
Curiosearé los enlaces que mandas, que parecen muy interesantes. Pueden
ser tema de conversación de la tertulia de hoy :-).
> Ya como bonus y como disculpas por el tochazo, dejo esta extensión de
> Firefox
> <https://addons.mozilla.org/es/firefox/addon/medium-unlimited-read-for-free/>
> que desbloquea el paywall de algunos sitios incluyendo medium y sucedáneos.
Yo tengo el truco de entrar en modo incógnito o, simplemente, borrar las
cookies para esa web. No obstante en este caso concreto el artículo
requería registro hasta hace unos días :-).
Si no fuera offtopic podríamos discutir largo y tendido sobre los
problemas de la concentración de internet en unos pocos jugadores :-).
Supongo que por aquí todo el mundo usa github, por ejemplo... :-). Uis,
mejor no abrir ese melón :-)
--
Jesús Cea Avión _/_/ _/_/_/ _/_/_/
jcea at jcea.es - https://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/
Twitter: @jcea _/_/ _/_/ _/_/_/_/_/
jabber / xmpp:jcea at jabber.org _/_/ _/_/ _/_/ _/_/ _/_/
"Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/
"My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 495 bytes
Desc: OpenPGP digital signature
URL: <https://lists.es.python.org/pipermail/madrid/attachments/20210105/b093a4bd/attachment.bin>
More information about the Madrid
mailing list