Técnicas de cortocircuito en Python

Por cortocircuito, nos referimos a la detención de la ejecución de la operación booleana si ya se ha determinado el valor de verdad de la expresión . La evaluación de la expresión se realiza de izquierda a derecha . En python, el cortocircuito es compatible con varios operadores y funciones booleanos. 

Cortocircuito en operadores booleanos

El cuadro que se muestra a continuación da una idea del caso de cortocircuito de las expresiones booleanas. Los operadores booleanos están ordenados por prioridad ascendente. 

bool

o: cuando el intérprete de Python escanea o expresa, toma la primera declaración y verifica si es verdadera. Si la primera declaración es verdadera, Python devuelve el valor de ese objeto sin verificar la segunda declaración. El programa no se molesta con la segunda declaración. Si el primer valor es falso, solo entonces Python verifica el segundo valor y luego el resultado se basa en la segunda mitad. 
y: Para una expresión and , Python usa una técnica de cortocircuito para verificar si la primera declaración es falsa, entonces toda la declaración debe ser falsa, por lo que devuelve ese valor. Solo si el primer valor es verdadero, verifica la segunda declaración y devuelve el valor. 
Una expresión que contiene y odetiene la ejecución cuando se ha alcanzado el valor de verdad de la expresión. La evaluación se realiza de izquierda a derecha.

Python3

# python code to demonstrate short circuiting 
# using and and or
   
# helper function
def check():
    return "geeks"
   
# using an expression to demonstrate
# prints "geeks", and gets executed 
# as both are required to check truth value
print (1 and check())
   
       
# using an expression to demonstrate
# prints 1
# as only if 1st value is true, or 
# doesnt require call check() fun
print (1 or check())
   
# using an expression to demonstrate
# prints "geeks"
# the value returns true when check 
# is encountered. 1 is not executed
print (0 or check() or 1)
   
# using an expression to demonstrate
# prints 1
# as last value is required to evaluate
# full expression because of "and"
print (0 or check() and 1)
Producción

geeks
1
geeks
1
Cortocircuito en all() y any()

Las funciones incorporadas all() y any() en python también admiten cortocircuitos. El siguiente ejemplo le dará una idea clara de cómo funciona.

Python3

# python code to demonstrate short circuiting 
# using all() and any()
   
# helper function
def check(i):
    print ("geeks")
    return i
   
# using all()
# stops execution when false occurs
# tells the compiler that even if one is 
# false, all cannot be true, hence stop 
# execution further.
# prints 3 "geeks" 
print (all(check(i) for i in [1, 1, 0, 0, 3]))
   
print("\r")
   
# using any()
# stops execution when true occurs
# tells the compiler that even if one is 
# true, expression is true, hence stop 
# execution further.
# prints 4 "geeks" 
print (any(check(i) for i in [0, 0, 0, 1, 3]))
Producción

geeks
geeks
geeks
False

geeks
geeks
geeks
geeks
True
Cortocircuito en operadores condicionales

Los operadores condicionales también siguen el cortocircuito, ya que cuando se obtiene el resultado de la expresión, no se requiere una ejecución adicional.

Python3

# python code to demonstrate short circuiting 
# using conditional operators
   
# helper function
def check(i):
    print ("geeks")
    return i
   
# using conditional expressions
# since 10 is not greater than 11
# further execution is not taken place 
# to check for truth value.
print( 10 > 11 > check(3) )
   
print ("\r")
   
# using conditional expressions
# since 11 is greater than 10
# further execution is taken place 
# to check for truth value.
# return true as 11 > 3
print( 10 < 11 > check(3) )
   
   
print ("\r")
   
   
# using conditional expressions
# since 11 is greater than 10
# further execution is taken place 
# to check for truth value.
# return false as 11 < 12
print( 10 < 11 > check(12) )
Producción

False

geeks
True

geeks
False

Cortocircuito en una escalera de sentencias if, elif, elif, … else

Cuando hay una secuencia, también conocida como una «escalera» de if y una o más declaraciones elif , no se evalúa ninguna de las condiciones después de la primera que se encuentra como verdadera.  

Python3

a = 10
b = 20
c = 30
 
def printreturn(l):
   print(l)
   return l
 
if a == 11:
    print("a == 11")
elif b == 20 and c == 30: # This is True
    print("b==20 and c==30")
elif b == a+a and 0<len(printreturn("This was evaluated")):
     # Though True, this is not even evaluated
    print("b == a+a")
Producción

b==20 and c==30

Este artículo es una contribución de Manjeet Singh . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *