[pyar] Cantidad de "returns" por función y algo más.

Lucas rollbak en gmail.com
Lun Jul 5 03:48:51 ART 2010


2010/7/5 Jean Chassoul <chassoul en gmail.com>

> Hola,
>
> Tengo una consulta sobre si es pythonico o no tener mas de uno o dos
> return's por función, adjunto este código de ejemplo:
>
> def generate_billing(channel, number, call_time, duration):
>     call_time = int(call_time.strftime('%H%M%S'))
>     call = match_billing(channel, number)
>
>     if call is None:
>         return [(None, None)]
>
>     billing = lambda rate: (duration * rate, call.billing.currency)
>
>     if call.billing.has_reduced:
>         start_time =
> int(''.join(call.billing.reduced_start_time.split(':')))
>         end_time = int(''.join(call.billing.reduced_end_time.split(':')))
>
>         if (lambda x: x >= start_time and x <= end_time)(call_time):
>             return [billing(call.billing.reduced_rate)]
>
>     return [billing(call.billing.rate)]
>
> Se que perfecta mente puede haber hecho algo como esto:
>
> def generate_billing(channel, number, call_time, duration):
>     call_time = int(call_time.strftime('%H%M%S'))
>     call = match_billing(channel, number)
>
>     if call:
>         [PONER AQUÍ EL RESTO DEL CÓDIGO]
>     else:
>         return [(None, None)]
>
> Pero no lo hice de esa forma para ahorrarme la identacion extra no se si me
> explico... de hacerlo de esa forma tendría que mover 4 espacios a la derecha
> todo el resto del código de la función y eso es exactamente lo que quise
> evitar para no pasar de los 78 espacios.
>
> La función tiene 3 posibles returns por eso me surge la duda si existe
> algún cuidado, limite o recomendación sobre este tema.
>
> Aprovechando el correo, estoy 99% seguro que existe una mejor forma de
> comparar horarios en python pero la verdad no se me ocurre como hacerlo como
> pueden ver en el código que adjunto estoy comparando horarios pasándolo de
> str a int y luego realizando la comparación con <= y >= :(
>
> Saludos y gracias de antemano por los consejos.
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>

Sobre lo primero, en mi caso prefiero tener varios returns en lugar del if
gigante.

Sobre lo segundo, si existe.

>>> import datetime
>>> t1 = datetime.datetime.now()
>>> t2 = datetime.datetime.now()
>>> t2 > t1
True
>>>
Los tipos datetime son comparables y tmb podes sacar deltas.

saludos,
-- 
Lucas
----------------------------------------------------
Open Your Mind, Use Open Source
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100705/b8c28522/attachment.html>


More information about the pyar mailing list