[pyar] Bug o feature?

Matias Graña matias.alejo en gmail.com
Dom Feb 20 12:31:59 ART 2011


2011/2/20 Roberto Alsina <ralsina en netmanagers.com.ar>:
> On 2/20/2011 11:55 AM, Matias Graña wrote:
>
> Claro. Que la tupla sea inmutable no significa que sus elementos lo sean :-)
>

Es verdad. Yo leí lo de func_defaults en un comentario a una respuesta acá:
http://stackoverflow.com/questions/101268/hidden-features-of-python
La respuesta, que justamente trata este tema, es "Be careful with
mutable default arguments". Ahí hay un comentario que dice lo que yo
comenté acá. Después de darle vueltas al asunto, noté que la
inmutabilidad es irrelevante.

>> Lo importante para que resulte en este bug/feature
>> es que el objeto func_defaults se construye cuando se compila la
>> función y no cada vez que se la invoca.
>
> Si se construyeran los defaults cada vez que se invocan sería trivial creal
> efectos secundarios aún más misteriosos.

Muy posiblemente. Yo supongo que si
*) cuando se compila la función se ponen los parámetros default en un
sector de memoria inaccesible desde la función (y desde afuera), y
*) cada vez que se ejecuta una función se copian (con una deep copy)
estos parámetros
no habría efectos secundarios. Pero soy bastante naif con estas cosas
y seguro que me paso algo por alto. Y por otra parte, seguro agregaría
un overhead importante a cada llamada a una función.

Matías



More information about the pyar mailing list