y es un Y lógico que devuelve Verdadero si ambos operandos son verdaderos, mientras que ‘&’ es un operador bit a bit en Python que actúa sobre los bits y realiza una operación bit a bit.
Nota: Cuando un valor entero es 0, se considera falso, de lo contrario, verdadero cuando se usa lógicamente.
Ejemplo:
# Python program to demonstrate # the difference between and, & # operator a = 14 b = 4 print(b and a) # print_stat1 print(b & a) # print_stat2
Producción:
14 4
Esto se debe a que ‘y’ comprueba si ambas expresiones son lógicamente verdaderas, mientras que ‘&’ realiza una operación AND bit a bit en el resultado de ambas declaraciones.
En la declaración de impresión 1, el compilador verifica si la primera declaración es verdadera. Si la primera declaración es Falsa, no verifica la segunda declaración y devuelve Falsa inmediatamente. Esto se conoce como “evaluación perezosa” . Si la primera declaración es Verdadera, entonces se verifica la segunda condición y, de acuerdo con las reglas de la operación AND, el resultado es Verdadero solo si ambas declaraciones son Verdaderas. En el caso del ejemplo anterior, el compilador verifica la primera declaración que es Verdadera ya que el valor de b es 4, luego el compilador se mueve hacia la segunda declaración que también es Verdadera porque el valor de a es 14. Por lo tanto, la salida es también 14
En la instrucción de impresión 2, el compilador realiza una operación bit a bit de los resultados de las instrucciones. Aquí, la declaración se evalúa de la siguiente manera:
el valor de 4 en binario es 0000 0100 y el valor de 14 en binario es 0000 1110. Al ejecutar bit a bit y obtenemos:
0000 0100 & = 0000 0100 = 4 0000 1110
Por lo tanto, la salida es 4.
Para profundizar en esto, podemos tomar otro ejemplo.
Ejemplo:
# Python program to demonstrate # the difference between and, & # operator a, b = 9, 10 print(a & b)#line 1 print(a and b)#line 2
Producción:
8 10
La primera línea está realizando AND bit a bit en a y b y la segunda línea está evaluando la declaración dentro de la impresión e imprimiendo la respuesta.
En la línea 1, a = 1001, b = 1010, realizando & en ayb, nos da 1000, que es el valor binario del valor decimal 8.
En la línea 2, la expresión ‘a y b’ primero evalúa a; si a es falso (o cero), su valor se devuelve inmediatamente debido a la «evaluación diferida» explicada anteriormente; de lo contrario, se evalúa b. Si b también es distinto de cero, se devuelve el valor resultante. Se devuelve el valor de b porque es el último valor en el que finaliza la comprobación de la veracidad de la declaración.
Por lo tanto, se recomienda el uso de booleanos y ‘y’ en un ciclo.
Publicación traducida automáticamente
Artículo escrito por shrishti_m180521ca y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA