<div dir="ltr"><div>En principio no debería serlo, a no ser que sepas cómo se comporta Python en el aspecto de asignar valores a variables no referenciadas (el link Jose lo explica).<br><br></div>Si no lo sabes, el comportamiento que crees que debería tener es [1] para cada llamada, ya que a cada llamada "debería" asignar el valor por defecto a x, ya que en ningún momento se lo pasas.<br>
<br>Si sabes cómo se comporta, es lo esperado, aun asi, como dice David, pylint te avisa por todos los lados, mejor asignar siempre variables a datos inmutables :-)<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">
El 9 de abril de 2014, 15:44, Arturo Llaja Alarcón <span dir="ltr"><<a href="mailto:artus.lla@autistici.org" target="_blank">artus.lla@autistici.org</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#CCCCFF"><div><div class="h5">
<div>On 08/04/14 16:58, Daπid wrote:<br>
</div>
<blockquote type="cite">
<p>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... </p>
<div class="gmail_quote">On Apr 8, 2014 11:41 PM, "Jose Caballero"
<<a href="mailto:jcaballero.hep@gmail.com" target="_blank">jcaballero.hep@gmail.com</a>>
wrote:<br type="attribution">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
es una de esas cosas casi imposibles de encontrar en google
(las key<br>
words son o demasiado genericas o demasiado especificas).<br>
<br>
<br>
El día 8 de abril de 2014, 12:08, Rock Neurotiko<br>
<<a href="mailto:miguelglafuente@gmail.com" target="_blank">miguelglafuente@gmail.com</a>>
escribió:<br>
> Vale...<br>
> Juro que busqué en Google, pero no lo encontré XD<br>
> Gracias! =D<br>
><br>
><br>
> El 8 de abril de 2014, 21:06, Jose Caballero <<a href="mailto:jcaballero.hep@gmail.com" target="_blank">jcaballero.hep@gmail.com</a>><br>
> escribió:<br>
><br>
>><br>
>> <a href="https://docs.python.org/3/tutorial/controlflow.html#default-argument-values" target="_blank">https://docs.python.org/3/tutorial/controlflow.html#default-argument-values</a><br>
>><br>
>><br>
>><br>
>> El día 8 de abril de 2014, 12:02, Rock Neurotiko<br>
>> <<a href="mailto:miguelglafuente@gmail.com" target="_blank">miguelglafuente@gmail.com</a>>
escribió:<br>
>> > Muy buenas,<br>
>> ><br>
>> > Hace bastante que no escribo, pero hoy me he
encontrado por reddit con<br>
>> > un<br>
>> > articulo en el que comenta una cosa de python, y
no entiendo<br>
>> > perfectamente<br>
>> > que es lo que ocurre, asi que os pregunto, a ver
si alguien sabe porqué<br>
>> > sucede :-)<br>
>> ><br>
>> > El codigo es este:<br>
>> ><br>
>> > def foo(x = []):<br>
>> > x.append(1)<br>
>> > print(x)<br>
>> ><br>
>> > foo()<br>
>> > foo()<br>
>> > foo()<br>
>> > [...]<br>
>> ><br>
>> > Recomiendo ejecutar, ya que el resultado es
soprendente (a no ser que<br>
>> > entiendas perfectamente como funciona python, o
ya te hayas cruzado con<br>
>> > esto<br>
>> > XD)<br>
>> ><br>
>> > Y ahora mi pregunta: ¿Porqué sucede esto?<br>
>> > Sé que tiene algo que ver con que Python al
ejecutar la funcion la<br>
>> > recorre<br>
>> > buscando las variables que vaya a usar, y las
guarda en el scope, en el<br>
>> > primer caso x viene del parametro (que seria
[]).<br>
>> > Como en python todo es un objeto, la llamada a
foo() se queda como<br>
>> > "instanciado", por lo que las siguientes
ejecuciones, al buscar "x" la<br>
>> > encuentra.<br>
>> ><br>
>> > No se si me explico, tampoco se si es eso, lo
cierto es que estoy<br>
>> > bastante<br>
>> > confuso con esto XD<br>
>> ><br>
>> > Un saludo!<br>
>> ><br>
>> ><br>
>> > --<br>
>> > Miguel García Lafuente - Rock Neurotiko<br>
>> ><br>
>> > Do it, the devil is in the details.<br>
>> > The quieter you are, the more you are able to
hear.<br>
>> > Happy Coding. Code with Passion, Decode with
Patience.<br>
>> > If we make consistent effort, based on proper
education, we can change<br>
>> > the<br>
>> > world.<br>
>> ><br>
>> > El contenido de este e-mail es privado, no se
permite la revelacion del<br>
>> > contenido de este e-mail a gente ajena a él.<br>
>> ><br>
>> > _______________________________________________<br>
>> > Python-es mailing list<br>
>> > <a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
>> > <a href="https://mail.python.org/mailman/listinfo/python-es" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
>> > FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
>> ><br>
>> _______________________________________________<br>
>> Python-es mailing list<br>
>> <a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
>> <a href="https://mail.python.org/mailman/listinfo/python-es" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
>> FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
><br>
><br>
><br>
><br>
> --<br>
> Miguel García Lafuente - Rock Neurotiko<br>
><br>
> Do it, the devil is in the details.<br>
> The quieter you are, the more you are able to hear.<br>
> Happy Coding. Code with Passion, Decode with Patience.<br>
> If we make consistent effort, based on proper education,
we can change the<br>
> world.<br>
><br>
> El contenido de este e-mail es privado, no se permite la
revelacion del<br>
> contenido de este e-mail a gente ajena a él.<br>
><br>
> _______________________________________________<br>
> Python-es mailing list<br>
> <a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/python-es" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
> FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
><br>
_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
</blockquote>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
Python-es mailing list
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a>
<a href="https://mail.python.org/mailman/listinfo/python-es" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a>
</pre>
</blockquote></div></div>
He probado la función que describes y el resultado es:<div class=""><br>
<br>
def foo(x = []):<br>
x.append(1)<br>
print(x)<br>
<br>
foo()<br></div>
[1]<br>
<br>
foo()<br>
[1, 1]<br>
<br>
foo()<br>
[1, 1, 1]<br>
<br>
¿Es lo esperado no?<br>
</div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div dir="ltr"><div style="text-align:center"><span style="color:rgb(51,51,51);font-family:Arial,Helvetica,sans-serif;line-height:16px">Miguel García Lafuente - Rock Neurotiko</span></div>
<div style="text-align:center"><span style="color:rgb(51,51,51);font-family:Arial,Helvetica,sans-serif;line-height:16px"><br></span></div><div style="text-align:center"><span style="color:rgb(51,51,51);font-family:Arial,Helvetica,sans-serif;line-height:16px">Do it, the devil is in the details.</span></div>
<div style="text-align:center"><font color="#333333" face="Arial, Helvetica, sans-serif"><span style="line-height:16px">The quieter you are, the more you are able to hear.</span></font></div><div style="text-align:center">
<span style="font-family:Helvetica,arial,verdana;font-size:15px;line-height:22.5px;text-align:left">Happy Coding. Code with Passion, Decode with Patience.</span><font color="#333333" face="Arial, Helvetica, sans-serif"><span style="line-height:16px"><br>
</span></font></div><div style="text-align:center">If we make consistent effort, based on proper education, we can change the world.<span style="color:rgb(51,51,51);font-family:Arial,Helvetica,sans-serif;line-height:16px"></span></div>
<div style="text-align:center"><span style="color:rgb(51,51,51);font-family:Arial,Helvetica,sans-serif;line-height:16px"><br></span></div><div style="text-align:center"><span style="color:rgb(51,51,51);font-family:Arial,Helvetica,sans-serif;line-height:16px">El contenido de este e-mail es privado, no se permite la revelacion del contenido de este e-mail a gente ajena a él.</span></div>
<div style="text-align:center"></div></div>
</div>