2015-12-08 34 views
11

Un mio esperto lo ha dimostrato e voglio sapere se questo è un difetto o ci sono un po 'di precedenza e di associatività dell'operatore che lo giustificano.Perché False == False in [False] restituisce True?

>>> False==False in [False] 
True 
+1

Questo potrebbe essere il caso del famoso concatenamento operatore di confronto di Python (in modo che questo sarebbe lo stesso di "Falso == False e False in [False]'). Non ne sono sicuro, però ... – hlt

+0

Senza saperlo, ma dalla risposta qui: http://stackoverflow.com/questions/34163067/python-why-does-false-false-in-false-returns-true # 34163067 - potrebbe essere dovuto al modo in cui viene gestito. '(False == False) in [False]' –

+0

sostituendo 'False' con' 1' lo rende molto più chiaro – letsc

risposta

20

comparison operators catena di Python.

False == False in [False] 

viene valutata come

(False == False) and (False in [False]) 

medio termine partecipa a entrambi i confronti.

Preferirei che lo in non si concatri con gli altri operatori di confronto.

+1

L'unico motivo per concatenare gli operatori per rendere le espressioni come 'x

+1

Non conosco un caso d'uso per concatenare 'in' con altri operatori di confronto che producono codice chiaro. –

+1

Steven, puoi evitare di provare a spararti ai piedi semplicemente non facendo cose stupide come questa. Nessuno ti costringe a scrivere codice non gestibile :-) –

Problemi correlati