[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