Hay un (o varios) artículo(s) muy interesante(s) al respecto de nuestro compañero Chema
como http://ch3m4.org/blog/2013/03/22/mutable-o-inmutable-he-ahi-el-dilema/ El 9 de abril de 2014, 17:23, Rock Neurotiko <[email protected]>escribió: > En este ejemplo, lo que ocurre es que como ya ha evaluado el valor por > defecto, y sabe en que direccion de memoria está, no vuelve a evaluarlo > porque no lo necesita, ya sabe donde está el resultado de esa operación. > > Esto también ocurre en la evaluacion perezosa (no es todo lo que abarca la > evaluacion perezosa, pero si una de las consecuencias) > > Por ejemplo, si en haskell usas [ x | x<-[1..200], x `mod` 2 == 0 ] > (ejemplo tonto), si lo vuelves a intentar usar, haskell sabe que ya lo > tiene, por lo que no lo vuelve a ejecutar. > > > El 9 de abril de 2014, 18:16, Guillermo Vaya <[email protected]> escribió: > > 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 <[email protected]>: >> >> 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 < >>> [email protected]> 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 < >>>> [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] >>>>> 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 >>>> [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/ >>>> >>>> >>> >>> >>> -- >>> 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-es mailing list >> [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/ > > -- *monoBOT* Visite mi sitio(Visit my site): monobotblog.alvarezalonso.es
_______________________________________________ Python-es mailing list [email protected] https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
