[pyar] Función que devuelve más de un valor. Opiniones.

Maximiliano Robaina maxi_robaina en yahoo.com.ar
Vie Jun 3 11:40:38 ART 2011


El jue, 02-06-2011 a las 21:25 -0300, Daniel Moisset escribió:
> 2011/6/2 Maximiliano Robaina <maxi_robaina en yahoo.com.ar>:
> > Hola lista,
> >
> > Me interesaría conocer las opiniones (y argumentos) respecto al modo en
> > que una función python devuelve más de un valor.
> >
> > El punto es que si tengo una función que debe devolver más de un valor,
> > me conviene:
> >
> > 1. Usar el clásico método de devolver los valores que quiero separados
> > por coma (,). ie:  return valor1, valor2, valorN
> >
> > 2. Devolver una estructura de datos y acá, dependiendo de la
> > heterogeneidad de los datos, usar por ejemplo un dict.
> > ie: return dict(val1=valor1, val2=valor2, valN=valorN)
> >
> > 3. otro/s?
> 
> Si tus datos son poquitos y homogeneos, una tupla puede andar.
> 
> Si tenes campos con nombres es mucho mas legible un namedtuple
> 
> Si es un mapeo de nombres que no estan predefinidos sino que cambian
> mucho, un dict o un bunch (el bunch es un poquito mas piola, pero no
> esta en la stdlib)
> 

Bunch, no lo conocía, gracias por el tip.

Pero... que diferencia tiene este a algo como:

class BizObject(object):
    def __init__(self, **kwargs)
        self.__dict__.update(kwargs)


obj = BizObject(name='Pepe', age=25)
print obj.name, obj.age


Teniendo en cuenta que te estas refiriendo a [1], no ?


> Igual eso es un consejo supergeneral. Hay que ver cada caso, quien va
> a consumir los datos, si esa estructura tiene sentido como input de
> otra cosa, etc, etc

Si por supuesto, como decía antes, todo dependerá del contexto del
problema a resolver, pero me interesaba sobre todo que propuestas puede
haber además de las más "convencionales".


Gracias por tu respuesta.

Saludos.

[1] http://pypi.python.org/pypi/bunch/1.0.0




More information about the pyar mailing list