[pyar] Bug o feature?

Matias Graña matias.alejo en gmail.com
Dom Feb 20 11:55:20 ART 2011


2011/2/20 Roberto Alsina <ralsina en netmanagers.com.ar>:
> On 2/20/2011 4:23 AM, Pablo Codeiro wrote:
>>
>> Pregunta de ignorante nomas...
>>
>> ...Esto está mal hecho? O un feature?
>>
>> Porqué motivo, al diseñar el func_defaults, python usa una tupla, y no una
>> lista? que ventajas acarrea? El comportamiento, al menos a simple vista, no
>> es el que uno espera, al menos sin conocimientos de como funciona
>> internamente...
>
> El default no lo pone python, lo pone el programador.
>
> O sea, si queres que el default sea una tupla es re facil:
>
> def f(x=()):
>    pass

Creo que Pablo se refiere a la tupla func_defaults, no a cada uno de
sus elementos. Yo fui el que dijo que para que el comportamiento fuera
el que es, era importante que fuese una tupla. La verdad, no estoy tan
seguro. Con los elementos de las listas pasa lo mismo. Esto es lo que
pasa con las tuplas:

>>> l = [1]
>>> fd = (l,)
>>> l.append(2)
>>> fd
([1, 2],)

y esto es lo que pasaría con una lista:

>>> l = [1]
>>> fd = [l]
>>> l.append(2)
>>> fd
[[1, 2]]

O sea, es lo mismo. 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.

Matías



More information about the pyar mailing list