Evaluación de cortocircuito en Python

Preet Sanghavi 21 junio 2023
  1. Operadores lógicos en Python
  2. ¿Qué es un cortocircuito?
  3. Cortocircuito usando el operador AND en Python
  4. Cortocircuito usando el operador OR en Python
Evaluación de cortocircuito 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 operador y.

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.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub