Evaluación de cortocircuito en Python
- Operadores lógicos en Python
- ¿Qué es un cortocircuito?
-
Cortocircuito usando el operador
AND
en Python -
Cortocircuito usando el operador
OR
en Python
Este artículo trata sobre mostrar el comportamiento de cortocircuito en Python usando operadores lógicos.
Operadores lógicos en Python
el operador O
OR
: ambos operandos se evalúan utilizando el operador or
de Python. El operador o
devuelve True
si cualquiera de los operandos es True
.
Sin embargo, el operador o
devolverá False
solo si todas las expresiones u operandos dados devuelven False
.
Tabla lógica del operador OR
:
primer valor | Segundo valor | Producción |
---|---|---|
Verdadero | Verdadero | Verdadero |
Verdadero | FALSO | Verdadero |
FALSO | Verdadero | Verdadero |
FALSO | FALSO | FALSO |
Representación del operador OR
anterior en la consola de Python:
>>> True or True
True
>>> True or False
True
>>> False or True
True
>>> False or False
False
Python también nos permite comparar múltiples expresiones usando el operador OR
.
>>> (5 < 10) or (8 < 5)
True
>>> (5 < 10) or (8 < 5) or (2 == 2) or (9 != 8)
True
el operador Y
Y
: cuando se usa el operador y
de Python, se evalúan ambos operandos y, si alguna expresión u operador dado no es verdadero, se devuelve False
. El operador y
solo devuelve True
cuando tanto la expresión dada como los operandos son True
.
Tabla lógica del operador AND
:
primer valor | Segundo valor | Producción |
---|---|---|
Verdadero | Verdadero | Verdadero |
Verdadero | FALSO | FALSO |
FALSO | Verdadero | FALSO |
FALSO | FALSO | FALSO |
Representación del operador AND
anterior en la consola de Python:
>>> True and True
True
>>> True and False
False
>>> False and True
False
>>> False and False
False
Comparar múltiples expresiones utilizando el operador AND
.
>>> (5 < 10) and (8 < 5)
False
>>> (5 < 10) and (8 < 5) and (2 == 2) and (9 != 8)
False
>>> (10 == 10) and (8 != 5) and (2 == 2) and (9 != 8)
True
¿Qué es un cortocircuito?
El cortocircuito se refiere a la terminación de una operación booleana cuando ya se ha establecido el valor de verdad de la expresión. El intérprete de Python evalúa la expresión de izquierda a derecha.
Los numerosos operadores booleanos y funciones de Python permiten el cortocircuito.
def exp(n):
print("Hello")
return n
Para ver cómo se produce el cortocircuito, utilizaremos la función anterior como uno de los operandos o expresiones, que imprimirá la palabra "Hola"
cuando el intérprete de Python la ejecute.
Cortocircuito usando el operador AND
en Python
Utilizando el operador y
:
>>> True and exp(1)
Hello
1
El intérprete de Python evalúa el código de izquierda a derecha en el código anterior. Según la tabla lógica del operador AND
, la expresión debe ser True
para obtener un valor booleano True
.
El intérprete de Python evalúa nuestra función solo porque el primer valor se establece en True
.
¿Qué pasa si establecemos el valor inicial en False
? Observe el siguiente código:
>>> False and exp(1)
False
Dado que el valor inicial se establece en False
, el intérprete de Python ignora la última expresión, ahorrando tiempo de ejecución.
Intercambiando la expresión:
>>> exp(1) and True
Hello
True
>>> exp(1) and False
Hello
False
En estos códigos, nuestra expresión inicial es la función que creamos anteriormente. El intérprete de Python evalúa primero la función dada, lo que resulta en la salida "Hola"
.
Nota: La función que hemos creado no produce ningún error o valor booleano
False
. Por lo tanto, el intérprete de Python siempre tendrá que evaluar una última expresión cuando la primera es la función dada cuando se usa el operadory
.
Cortocircuito usando el operador OR
en Python
Utilizando el operador o
:
>>> True or exp(1)
True
Evaluando el código de izquierda a derecha. Establecer el valor inicial en True
permite que el intérprete de Python ignore la ejecución de la última expresión, que es la función dada.
Por lo tanto, de acuerdo con la tabla lógica dada del operador OR
, la salida es True
.
>>> False or exp(1)
Hello
1
El intérprete de Python ejecuta la función en el código anterior porque el valor anterior se establece en False
.
Intercambiando la expresión:
>>> exp(1) or True
Hello
1
>>> exp(1) or False
Hello
1
Cuando intercambiamos las expresiones, nuestra función creada se ejecuta siempre, ya que es el primer operando que evalúa el intérprete de Python.
Teniendo en cuenta cualquiera de los ejemplos de código anteriores, el operador o
devolverá un valor booleano True
.
Sin embargo, si obtenemos un valor booleano False
usando el operador o
, podemos modificar un poco la función creada.
def exp():
print("Hello")
return False
>>> exp()
Hello
False
Después de los cambios anteriores, siempre que llamemos a la función exp()
, solo devolverá el valor booleano False
después de imprimir Hola
en la consola.
>>> exp() or True
Hello
True
>>> exp() or False
Hello
False
Dado que la función solo devuelve un valor booleano False
en cada llamada, el intérprete de Python debe evaluar la última expresión u operando.