Quizás me confunda, corregirme si es así, pero la evaluación perezosa[1] es simplemente no evaluar las expresiones si no hay necesidad, así que no tengo muy claro que tiene que ver eso con que en Python las funciones sean objetos y sus argumentos sean parte del estado del objeto, por lo que al utilizar un tipo de datos mutable genera esta situación [2].
[1] http://en.wikipedia.org/wiki/Lazy_evaluation [2] http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument 2014-04-09 17:58 GMT+02:00 Rock Neurotiko <miguelglafue...@gmail.com>: > No completamente como Haskell, pero si, en algunos casos si :-P > > Mi problema en el primer email era que no sabia que se comportaba asi para > los parámetros, ahora si lo se, y espero que el resto también =D > > > El 9 de abril de 2014, 17:49, Arturo Llaja Alarcón < > artus....@autistici.org> escribió: > > 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 < >> artus....@autistici.org> 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 >>> Python-es@python.org >>> 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 >> listPython-es@python.orghttps://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 >> Python-es@python.org >> 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 > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/