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

Eliseo Ocampos roskoff en gmail.com
Vie Dic 17 09:06:55 ART 2010


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?

Saludos,
Eliseo.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20101217/2a7a908b/attachment.html>


More information about the pyar mailing list