Perdón César, la respuesta era para Nicolas ;) El 6 de julio de 2017, 11:32, Angel Lis <anlis...@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 <ta...@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_8858629466002260070_m_-1228148143883588336_UNIQUE_ID_SafeHtmlFilter_> >> Web: https://www.openshine.com/ >> >> El 3 de julio de 2017, 17:41, Nicolas lino <nicolasli...@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@python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> >>> >> >> _______________________________________________ >> Python-es mailing list >> Python-es@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@python.org https://mail.python.org/mailman/listinfo/python-es