Entonces, estaba jugando con el intérprete y escribí lo siguiente:
In [95]: 1 and 2 Out[95]: 2 In [96]: 1 and 5 Out[96]: 5 In [97]: 234324 and 2 Out[97]: 2 In [98]: 234324 and 22343243242 Out[98]: 22343243242L In [99]: 1 or 2 and 9 Out[99]: 1
Inicialmente pensé que tenía que ver con los valores Falso y Verdadero, porque:
In [101]: True + True Out[101]: 2 In [102]: True * 5 Out[102]: 5
Pero eso no parece estar relacionado, porque Falso siempre es 0, y parece que en los ensayos anteriores no es el valor más grande que se emite.
No puedo ver el patrón aquí honestamente, y no pude encontrar nada en la documentación (honestamente, no sabía cómo buscarlo de manera efectiva).
Entonces, ¿cómo
int(x) [logical operation] int(y)
trabajar en Python?
De la documentación de Python:
La expresión
x and y
primero evalúax
; six
es falso, su valor es devuelto; de lo contrario, se evalúa y y se devuelve el valor resultante.
Que es exactamente lo que tu experimento muestra que está sucediendo. Todos sus valores de x
son verdaderos, por lo que se devuelve el valor de y
.
Es para cada elemento en Python, no depende del entero.
not x Returns True if x is True, False otherwise x and y Returns x if x is False, y otherwise x or y Returns y if x is False, x otherwise
1 es verdadero, por lo que devolverá 2