Estoy tratando de averiguar en qué orden se ejecuta este código:
print( True in [True] in [True] ) Falseaunque:
print( ( True in [True] ) in [True] ) Truey:
print( True in ( [True] in [True] ) ) TypeErrorSi el primer código no es ninguno de estos dos últimos, ¿entonces qué?
in se compara con el encadenamiento allí, así que
True in [True] in [True] es equivalente a (excepto que el medio [True] se evalúa una vez)
(True in [True]) and ([True] in [True])cual es
True and Falsecual es
FalseTodo esto es similar a
2 < 4 < 12 operación que es equivalente a (2 < 4) and (4 < 12) .
print( True in [True] in [True] )
En realidad, esto se interpreta como - True in [True] and [True] in [True] lo que le da falso porque se convierte en - True and False
print( ( True in [True] ) in [True] )
El ( True in [True] ) se verifica primero, por lo que obtienes True in [True] que es Verdadero.
print( True in ( [True] in [True] ) )
La segunda parte está marcada, antes que la primera debido a un paréntesis que cambia el orden, por lo que se convierte en - True in True . Y True , que es un booleano, no es iterable, por lo que no puede usar in , y luego obtiene TypeError