On 09/04/14 10:47, Rock Neurotiko wrote:
Claro, ese es el comportamiento que se espera si conoces cómo funciona Python al asignar los valores.

En otros lenguajes, el valor por defecto siempre se evalua (en python solo la primera vez que llamas a ese metodo), por lo que si no le pasas el parametro siempre va a ser el que viene por defecto, por mucho que sea mutable el tipo, ya que evaluan el valor por defecto.

Pero, como digo, en Python no es así, y para la gente que no lo sepa (como yo al iniciar el hilo) les puede traer problemas.



El 9 de abril de 2014, 17:39, Arturo Llaja Alarcón <[email protected] <mailto:[email protected]>> escribió:

    On 09/04/14 09:38, Rock Neurotiko wrote:
    x = []
    Pero se lo estás pasando en la línea:
    def foo(x = []):

    Según lo que leo, la función crea una variable x, y le asigna un
    valor x.append(1), en ningún momento la destruye ni la reinicia.

    La variable x se queda en memoria y por lo tanto al llamar de
    nuevo la función foo() se agrega un valor a la lista, recuerda que
    las listas son mutables.

    Para que siempre tengas un mismo valor mejor sería usar una tupla:

    def foo(x=()):
        x = (1)
        print(x)


    foo()
    1

    foo()
    1

    tal como se describe en la resolución de variables locales y
    globales de Python.
    Es mi observación, salvo mejor opinión,

    _______________________________________________
    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]
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
Python usa la evaluación perezosa :)

Saludos.
_______________________________________________
Python-es mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a