[Python-es] Comportamiento de python.
Arturo Llaja Alarcón
artus.lla en autistici.org
Mie Abr 9 15:44:31 CEST 2014
On 08/04/14 16:58, Da?id wrote:
>
> Por cierto, si usas eso en código y lo analizas con pylint, te avisa
> de que eso es un imán para bugs. Suele ser una buena idea pasarlo de
> vez en cuando, aunque no siempre haya que hacerle caso...
>
> On Apr 8, 2014 11:41 PM, "Jose Caballero" <jcaballero.hep en gmail.com
> <mailto:jcaballero.hep en gmail.com>> wrote:
>
> es una de esas cosas casi imposibles de encontrar en google (las key
> words son o demasiado genericas o demasiado especificas).
>
>
> El día 8 de abril de 2014, 12:08, Rock Neurotiko
> <miguelglafuente en gmail.com <mailto:miguelglafuente en gmail.com>>
> escribió:
> > Vale...
> > Juro que busqué en Google, pero no lo encontré XD
> > Gracias! =D
> >
> >
> > El 8 de abril de 2014, 21:06, Jose Caballero
> <jcaballero.hep en gmail.com <mailto:jcaballero.hep en gmail.com>>
> > escribió:
> >
> >>
> >>
> https://docs.python.org/3/tutorial/controlflow.html#default-argument-values
> >>
> >>
> >>
> >> El día 8 de abril de 2014, 12:02, Rock Neurotiko
> >> <miguelglafuente en gmail.com <mailto:miguelglafuente en gmail.com>>
> escribió:
> >> > Muy buenas,
> >> >
> >> > Hace bastante que no escribo, pero hoy me he encontrado por
> reddit con
> >> > un
> >> > articulo en el que comenta una cosa de python, y no entiendo
> >> > perfectamente
> >> > que es lo que ocurre, asi que os pregunto, a ver si alguien
> sabe porqué
> >> > sucede :-)
> >> >
> >> > El codigo es este:
> >> >
> >> > def foo(x = []):
> >> > x.append(1)
> >> > print(x)
> >> >
> >> > foo()
> >> > foo()
> >> > foo()
> >> > [...]
> >> >
> >> > Recomiendo ejecutar, ya que el resultado es soprendente (a no
> ser que
> >> > entiendas perfectamente como funciona python, o ya te hayas
> cruzado con
> >> > esto
> >> > XD)
> >> >
> >> > Y ahora mi pregunta: ¿Porqué sucede esto?
> >> > Sé que tiene algo que ver con que Python al ejecutar la
> funcion la
> >> > recorre
> >> > buscando las variables que vaya a usar, y las guarda en el
> scope, en el
> >> > primer caso x viene del parametro (que seria []).
> >> > Como en python todo es un objeto, la llamada a foo() se queda
> como
> >> > "instanciado", por lo que las siguientes ejecuciones, al
> buscar "x" la
> >> > encuentra.
> >> >
> >> > No se si me explico, tampoco se si es eso, lo cierto es que estoy
> >> > bastante
> >> > confuso con esto XD
> >> >
> >> > Un saludo!
> >> >
> >> >
> >> > --
> >> > 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 <mailto: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 <mailto: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 <mailto: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 <mailto: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/
He probado la función que describes y el resultado es:
def foo(x = []):
x.append(1)
print(x)
foo()
[1]
foo()
[1, 1]
foo()
[1, 1, 1]
¿Es lo esperado no?
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140409/4d797276/attachment.html>
Más información sobre la lista de distribución Python-es