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
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
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.
L'unico motivo per concatenare gli operatori per rendere le espressioni come 'x
Non conosco un caso d'uso per concatenare 'in' con altri operatori di confronto che producono codice chiaro. –
Steven, puoi evitare di provare a spararti ai piedi semplicemente non facendo cose stupide come questa. Nessuno ti costringe a scrivere codice non gestibile :-) –
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
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]' –
sostituendo 'False' con' 1' lo rende molto più chiaro – letsc