[Python] __debug__ e EAFP

Marco Giusti marco.giusti a posteo.de
Gio 12 Maggio 2016 08:14:33 CEST


On Wed, May 11 2016, Roberto Polli wrote:
> Il 11 maggio 2016 16:31, Pietro Battiston <ml a pietrobattiston.it> ha scritto:
> > ... condensare ...
> >
> > if not civico.isdigit():
> >     raise ValueError("Il numero civico deve essere numerico")
> >
> > in
> >
> > assert(civico.isdigit()) "Il numero civico deve essere numerico"
> >
> Uso assert se il controllo:
> 
>   - non deve influire sul flusso del programma;
>   - rappresenta condizioni inaspettate e quindi un bug del programma;
>   - come placeholder nelle fasi preliminari - chiarito meglio il
> flusso li sostituisco con eccezioni;
> 
> eg.
> 
> ```
> ret = factorial(n)
> assert ret, "Factorial can't be negative. BUG in the program!"
> print(ret)
> ```

try:
    # your code
except AssertionError:
    raise AssertionError("BUG in the assertion")
else:
    if x < 0:
        raise AssertionError("BUG in the assertion")


Maggiori informazioni sulla lista Python