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
[email protected]
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a