[Python-es] Comportamiento de python.

Jose Caballero jcaballero.hep en gmail.com
Mar Abr 8 21:06:38 CEST 2014


https://docs.python.org/3/tutorial/controlflow.html#default-argument-values



El día 8 de abril de 2014, 12:02, Rock Neurotiko
<miguelglafuente en gmail.com> escribió:
> Muy buenas,
>
> Hace bastante que no escribo, pero hoy me he encontrado por reddit con un
> articulo en el que comenta una cosa de python, y no entiendo perfectamente
> que es lo que ocurre, asi que os pregunto, a ver si alguien sabe porqué
> sucede :-)
>
> El codigo es este:
>
> def foo(x = []):
>     x.append(1)
>     print(x)
>
> foo()
> foo()
> foo()
> [...]
>
> Recomiendo ejecutar, ya que el resultado es soprendente (a no ser que
> entiendas perfectamente como funciona python, o ya te hayas cruzado con esto
> XD)
>
> Y ahora mi pregunta: ¿Porqué sucede esto?
> Sé que tiene algo que ver con que Python al ejecutar la funcion la recorre
> buscando las variables que vaya a usar, y las guarda en el scope, en el
> primer caso x viene del parametro (que seria []).
> Como en python todo es un objeto, la llamada a foo() se queda como
> "instanciado", por lo que las siguientes ejecuciones, al buscar "x" la
> encuentra.
>
> No se si me explico, tampoco se si es eso, lo cierto es que estoy bastante
> confuso con esto XD
>
> Un saludo!
>
>
> --
> Miguel García Lafuente - Rock Neurotiko
>
> Do it, the devil is in the details.
> The quieter you are, the more you are able to hear.
> Happy Coding. Code with Passion, Decode with Patience.
> If we make consistent effort, based on proper education, we can change the
> world.
>
> El contenido de este e-mail es privado, no se permite la revelacion del
> contenido de este e-mail a gente ajena a él.
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>


Más información sobre la lista de distribución Python-es