[Python] 0 in (False,) // 0 == False

Alessandro Dentella sandro a e-den.it
Ven 5 Feb 2010 20:24:32 CET


On Fri, Feb 05, 2010 at 05:53:01PM +0100, Daniele Varrazzo wrote:
> On Fri, 05 Feb 2010 17:39:46 +0100, Pietro Battiston <toobaz a email.it>
> wrote:
> 
> > Per carità, dal punto di vista storico è chiaro, e non sto neanche
> > facendo una battaglia perché si cambi: vorrei solo che si riconoscesse
> > che non c'è nessun motivo assoluto per cui debba essere così.
> 
> Ok, non c'era nessun motivo assoluto per cui dovesse essere così. Su
> questo hai ragione.
> 
> Si sarebbe potuto fare:
> 
> bool == int è sempre falso
> bool != int è sempre vero
> bool <, >, <=, >= int spara un'eccezione
> int(True) = 1
> int(False) = 0
> bool op int = int(bool) op int per ogni op aritmetica.
> 
> Se invece i tipi funzionano con la semantica attuale è solo per
> convenzione e utilità. Se questa semantica è implementa come subclass è
> solo per comodità di implementazione.


Grazie per i chiarimenti e l'interessante discussione in particolare
a Pietro e Daniele per l'analisi e gli esempi di supporto.

Personalemnte mi pare chiaro che la prima citazione di Guido è perfettamente
in linea con quanto scritto qui sopra... in attesa che Enrico mantenga la
promessa e mostri gli "assurdi completi" che quanto scritto sopra
comporterebbe. 

sandro
*:-)



Maggiori informazioni sulla lista Python