[Python-es] Comportamiento de python.

Rock Neurotiko miguelglafuente en gmail.com
Mie Abr 9 17:47:12 CEST 2014


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.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140409/41e5bf40/attachment.html>


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