[Python-es] Comportamiento de python.

monoBOT monobot.soft en gmail.com
Mie Abr 9 18:58:42 CEST 2014


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
<miguelglafuente en gmail.com>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 <nadaird en gmail.com> 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 <miguelglafuente en 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.lla en 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.lla en 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 en 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 en 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 en 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 en python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en 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 en python.org
> 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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140409/5c18be0b/attachment.html>


Más información sobre la lista de distribución Python-es