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/