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

Jean Chassoul chassoul en gmail.com
Lun Jul 5 16:41:32 ART 2010


2010/7/5 Lucas <rollbak en gmail.com>

> 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.
>
>
Enga, muchas gracias! entonces supongo que no esta del todo mal lo de
los múltiples returns y gracias por el tip de la comparación de datetimes.

Saludos.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100705/24203dff/attachment.html>


More information about the pyar mailing list