[pyar] [Consulta] Instrucción assert

Apokalyptica Painkiller apokalyptica79 en gmail.com
Mie Jun 12 11:10:40 ART 2013


Buenísimo tu ejemplo Hugo, muchísimas gracias, y gracias Federico por los
links :)


El 12 de junio de 2013 10:49, Hugo Arregui <hugo.arregui en gmail.com>escribió:

> Yo uso mucho assert. Las aserciones son chequeos en runtime fuera del
> flujo normal del programa, para validar la coherencia interna.
>
> Supongamos una función calcularEdad(fecha_nacimiento); esta función es
> parte de un sistema de lo q sea, no una librería de calculo de edad,
> por lo tanto tiene ciertas pre y post condiciones, la precondición es
> que sea una fecha valida, para hacerlo simple en este caso digamos q
> sea una fecha del pasado. Y la post condición, es que sea una edad
> valida, digamos >0.
>
> def calcularEdad(fecha_nacimiento):
>    assert fecha_nacimiento < now()
>    edad = ...
>    assert edad > 0
>    return edad
>
> Ahora, nótese algunas cuestiones:
>
> 1) Pequeña aclaración: estas condiciones nunca pueden darse una si y
> otra no, pero a propósitos ilustrativos funcionan :-)
>
> 2) Si por alguna razón (digamos datos corruptos), hay una fecha en el
> futuro, y calcularEdad es parte de un proceso, el error q obtengamos
> durante desarrollo sera totalmente acotado:
>
>    assert fail: fecha_nacimiento < now()
>
> 3) Si nuestro sistema tiene q ser rápido, todos estos chequeos tan
> útiles en desarrollo son facilmente deshabilitados: es decir, testing
> en runtime durante desarrollo y cero overhead en prod.
>
> 4) Nótese tb que no es equivalente el assert al raise Exception, dado
> que una fecha de nacimiento invalida no es (en este caso), un flujo de
> programa valido.
>
> Saludos,
> Hugo
> _______________________________________________
> 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/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 
I live each day
Like it's my last
I live for rock and roll
I never look back

I'm a rocker
Do as I feel as I say
I'm a rocker
And no one can take that away
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130612/ea984591/attachment.html>


More information about the pyar mailing list