[Python-es] Mejora de codigo.

Nicolas lino nicolaslino1 en gmail.com
Jue Jul 6 10:21:59 EDT 2017


Muchas gracias por las respuestas.


> La solución termino saliendo por otro lado, pero me orientaron sobre la
> idea y por que no es incorrecto el try/except.


Saludos.

El 6 de julio de 2017, 6:34, Angel Lis <anlismon en gmail.com> escribió:

> Perdón César,
> la respuesta era para Nicolas ;)
>
> El 6 de julio de 2017, 11:32, Angel Lis <anlismon en gmail.com> escribió:
>
>> Hola César,
>> tu solución es bastante correcta, lo único que te diría es que el except
>> genérico, puede darte problemas. Deberías capturar la excepción que
>> quieres.Me explico:
>>
>> Imaginate que usas tu función, pero no has hecho un
>> >from datetime import datetime
>> si no que lo has importado como
>> >import datetime
>> o incluso no lo has importado ( siempre se nos puede olvidar )
>>
>> Bueno, en ese caso, siempre te va a dar un False, aunque le pases un ts
>> correcto, ya que la excepción NameError o AttributeError la estas
>> capturando y enmascarando. Y eso es fuente de bugs muy "jodios" de cazar.
>>
>> podrías usar tu función como:
>>
>> def is_timestamp(var):
>>     try:
>>         datetime.fromtimestamp(var)
>>         return True
>>     except TypeError:
>>         return False
>>     except OSError:
>>         #llamada con un float("nan")
>>         return False
>>     except OverflowError:
>>         #llamada con un float("inf")
>>         return False
>>
>>
>>
>> aunque si no quieres, o estas en contra de usar tantos try/except,
>> también puedes comprobar si es un valor numérico, aunque el float("nan") y
>> el float("inf") tendrías que capturarlo también:
>>
>> def is_timestamp_no_try_except(var):
>>     return isinstance(var,float) | isinstance(var,int)
>>
>>
>> Un saludo.
>>
>> El 5 de julio de 2017, 17:28, César García Tapia <tapia en openshine.com>
>> escribió:
>>
>>> ¿Por qué no te gusta? Las excepciones sirven exactamente para eso. Que
>>> se suelan usar para control de errores no significa que sea su único uso
>>> correcto.
>>>
>>> Eso sí, siempre debes usar la excepción más específica posible, así que
>>> en vez de "except" deberías poner "except TypeError", que es la excepción
>>> que lanza fromtimestamp() si le pasas algo que no sea un número.
>>>
>>> Un saludo.
>>>
>>>
>>> *César García Tapia*
>>> Director técnico
>>> Tlf: +34 663 273 481 <+34+663+273+481>
>>> Skype: cesargarciatapia
>>> <#m_-806184798808518131_m_8858629466002260070_m_-1228148143883588336_UNIQUE_ID_SafeHtmlFilter_>
>>> Web: https://www.openshine.com/
>>>
>>> El 3 de julio de 2017, 17:41, Nicolas lino <nicolaslino1 en gmail.com>
>>> escribió:
>>>
>>>> Buenas.
>>>>
>>>> A alguien se le ocurre una manera mas prolija o una librería para hacer
>>>> lo siguiente:
>>>>
>>>>
>>>> >>> a
>>>> 1499095933.289
>>>> >>> b
>>>> 'asdasdsa'
>>>> >>> def is_timestamp(var):
>>>> ...   try:
>>>> ...     datetime.fromtimestamp(var)
>>>> ...     return True
>>>> ...   except:
>>>> ...     return False
>>>> ...
>>>> >>> is_timestamp(a)
>>>> True
>>>> >>> is_timestamp(b)
>>>> False
>>>>
>>>>
>>>> No me gusta la idea de usar un try y forzar una excepción para validar
>>>> si es un timestamp. Pero no se me a ocurrido nada mejor.
>>>>
>>>>
>>>> Gracias!
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Python-es mailing list
>>>> Python-es en python.org
>>>> https://mail.python.org/mailman/listinfo/python-es
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>>
>>>
>>
>>
>> --
>> --
>> Liso^TLOTB
>> Bite my shiny metal ass
>>
>
>
>
> --
> --
> Liso^TLOTB
> Bite my shiny metal ass
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20170706/f5f85deb/attachment.html>


Más información sobre la lista de distribución Python-es