[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