[pyar] Tipo del valor de retorno distinto según los parámetros

QliX=D! [aka EHB] qlixed en gmail.com
Vie Dic 17 11:53:58 ART 2010


2010/12/17 Eliseo Ocampos <roskoff en gmail.com>

> Buenos días Pyar,
>
> Tengo la siguiente función:
> def check_value(key,instance):
>     if key in instance:
>         return instance[key]
>     else:
>         return ""
>
> La cual se usaría así:
> valor = check_value("nombre", datos_personales)   # datos_personales:
> {'nombre': 'Eliseo', 'apellido': 'Ocampos'}
>
> Así, si no existiera la clave nombre, valor sería '' (string vacío)
>
> Pero ahora tengo otro requerimiento adicional que sería soportar enteros,
> floats (por ahora, más adelante probablemente necesite soportar también
> dicionarios), en fin, se me ocurrieron dos formas:
> 1. Hacer funciones distintas según el tipo de dato a retornar, por ejemplo:
> def check_value_int(key,instance):
>     if key in instance:
>         return instance[key]
>     else:
>         return 0
>
> 2. Usar la misma función pero pasarle un parámetro extra para indicar el
> tipo de dato a retornar, por ejemplo:
> def check_value(key,instance, type):
>     if key in instance:
>         return instance[key]
>     else:
>         if type = INT:  # constante definida
>             return 0
>         elif type = STRING:
>             return ''
> la cual se usaría así:
>    valor = check_value("edad", datos_personales, INT)   # datos_personales:
> {'nombre': 'Eliseo', 'apellido': 'Ocampos', 'edad': 26}
>
> Mi pregunta es, hay algo que sea mas pythonico? Cúal sería la forma más
> genérica de extender a otros tipos de datos posibles que pueda tener? O esto
> es un capricho mío nomás por ser haragán y no querer escribir más de una
> función?
>
>
Me parece que una funcion devuelva distintos tipos de datos no es muy
prolijo que digamos, a mi entender, quedaria mejor que devuelvas None, ya
que me parece mas logico decir:

if key in instance:
  return instance[key]
else:
  return None

Ya que como es una comprobacion de existencia, me suena mas ordenado que
devuelva None.

My 2 cents.
:)

QliX=D! [aka EHB]
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20101217/2cd981f2/attachment.html>


More information about the pyar mailing list