On 08/04/14 16:58, Da?id wrote:

Por cierto, si usas eso en código y lo analizas con pylint, te avisa de que eso es un imán para bugs. Suele ser una buena idea pasarlo de vez en cuando, aunque no siempre haya que hacerle caso...

On Apr 8, 2014 11:41 PM, "Jose Caballero" <[email protected] <mailto:[email protected]>> wrote:

    es una de esas cosas casi imposibles de encontrar en google (las key
    words son o demasiado genericas o demasiado especificas).


    El día 8 de abril de 2014, 12:08, Rock Neurotiko
    <[email protected] <mailto:[email protected]>>
    escribió:
    > Vale...
    > Juro que busqué en Google, pero no lo encontré XD
    > Gracias! =D
    >
    >
    > El 8 de abril de 2014, 21:06, Jose Caballero
    <[email protected] <mailto:[email protected]>>
    > escribió:
    >
    >>
    >>
    https://docs.python.org/3/tutorial/controlflow.html#default-argument-values
    >>
    >>
    >>
    >> El día 8 de abril de 2014, 12:02, Rock Neurotiko
    >> <[email protected] <mailto:[email protected]>>
    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
    >> > [email protected] <mailto:[email protected]>
    >> > https://mail.python.org/mailman/listinfo/python-es
    >> > FAQ: http://python-es-faq.wikidot.com/
    >> >
    >> _______________________________________________
    >> Python-es mailing list
    >> [email protected] <mailto:[email protected]>
    >> https://mail.python.org/mailman/listinfo/python-es
    >> FAQ: http://python-es-faq.wikidot.com/
    >
    >
    >
    >
    > --
    > 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] <mailto:[email protected]>
    > https://mail.python.org/mailman/listinfo/python-es
    > FAQ: http://python-es-faq.wikidot.com/
    >
    _______________________________________________
    Python-es mailing list
    [email protected] <mailto:[email protected]>
    https://mail.python.org/mailman/listinfo/python-es
    FAQ: http://python-es-faq.wikidot.com/



_______________________________________________
Python-es mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
He probado la función que describes y el resultado es:

def foo(x = []):
    x.append(1)
    print(x)

foo()
[1]

foo()
[1, 1]

foo()
[1, 1, 1]

¿Es lo esperado no?
_______________________________________________
Python-es mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a