Guía de Python u Operador

En esta guía, veremos cómo usar el operador or de Python, cómo funciona el álgebra booleana, qué valores verdaderos y falsos hay en Python, y cómo usar el operador or con valores booleanos y no booleanos. .

Introducción

El operador o es uno de los tres operadores lógicos existentes en Python (y, o, no), que realizan una evaluación lógica de los operandos pasados.

En términos simples, cuando se pasan dos operandos, decidirá si el valor final de la expresión lógica creada es Verdadero o Falso. El mecanismo utilizado para evaluar el valor de la expresión final se basa en el conjunto de reglas conocidas como álgebra booleana.

En esta guía, cubriremos el operador o en Python, así como sus casos de uso más comunes.

o Conceptos básicos del operador

El operador o de Python simplemente realiza una disyunción lógica en los dos operandos provistos. Suponiendo que los operandos son simplemente dos valores booleanos, la regla sobre cómo usar el operador o es bastante sencilla:

Si cualquiera de los dos operandos tiene el valor Verdadero, la expresión completa tiene el valor Verdadero. En todos los demás casos, la expresión completa tiene el valor Falso.

Ahora echemos un vistazo a la tabla de verdad del operador o:


Operando 1 Operando 2 O Expresión Valor Verdad verdad verdad Verdadero Falso Verdadero Falso Verdadero Verdadero Falso Falso Falso


Esta tabla describe la ley de la disyunción lógica. Mirando esta tabla, podemos ver que el operador ‘o’ produce ‘Falso’ como resultado solo si ambos operandos también son ‘Falsos’.

Todo esto nos lleva al concepto de evaluación perezosa. Un mecanismo utilizado para optimizar los cálculos de operaciones matemáticas. En este caso particular, se utiliza para acelerar el proceso de evaluación de expresiones booleanas con el operador o.

Ya sabemos que una expresión o da como resultado un valor Verdadero si cualquiera de sus dos operandos es Verdadero. Por lo tanto, en una expresión booleana que consta de múltiples operandos, es completamente innecesario evaluar cada uno de ellos individualmente.

Basta con leer los valores de los operandos uno tras otro. Cuando nos encontramos con un ‘Verdadero’ por primera vez, podemos ignorar con seguridad todos los demás operandos y evaluar toda la expresión como ‘Verdadero’.

Por otro lado, si no hay un operando con el valor Verdadero, debemos evaluar toda la expresión con el valor Falso. Ese es el principio básico de la evaluación perezosa: no evalúes si no es necesario.

Uso de o en variables booleanas

El operador o en Python se usa para evaluar dos de sus operandos. En esta sección, nos centraremos en el caso en el que ambos operandos tienen valores booleanos. En algunos casos, el operador o se puede usar con valores no booleanos, que discutiremos en las siguientes secciones.

Echemos un vistazo a cómo usar el operador o con dos valores booleanos:

1
2
3
4
5
6
# Two Boolean values
result1 = True or False # Expected to be `True`
result2 = False or False # Expected to be `False`

print('R1:', result1)
print('R2:', result2)

En este ejemplo, podemos ver cómo el operador o evalúa expresiones que consisten solo en valores booleanos simples. Como se describe en las secciones anteriores, este fragmento de código tendrá el siguiente resultado:

1
2
R1: True
R2: False

En el ejemplo anterior, nombramos las expresiones booleanas resultado1 y resultado2. De esa manera, hemos creado dos variables booleanas con valores ‘Verdadero’ y ‘Falso’, respectivamente.

Esas dos variables pueden usarse como operandos de otra expresión booleana y, por lo tanto, podrían considerarse como subexpresiones de la expresión booleana más compleja. Ese es el principio general utilizado para construir expresiones booleanas más complejas capa por capa:

1
2
3
4
5
result3 = result1 or result2 # `True` or `False` <=> `True`
result4 = result3 or True # `True` or `True` <=> `True`

print('R3:', result3)
print('R4:', result4)

Como se esperaba, esto generará:

1
2
R3: True
R4: True

result4 es una expresión booleana compleja que consta de varias subexpresiones y valores booleanos. Echemos un vistazo al proceso de despliegue:

1
2
3
1. result4 = result3 or True
2. result4 = (result1 or result2) or True
3. result4 = ((True or False) or (False or False)) or True

Con base en la ley asociativa para el operador o, sabemos que el orden en que aplicamos el operador no tiene impacto en el valor de la expresión booleana, por lo que no hay necesidad de corchetes. Por lo tanto, podemos transformar result4 un paso más allá eliminando todos los corchetes:

1
 result4 = True or False or False or False or True

Uso de o en variables no booleanas

El operador o en Python también se puede usar con variables que no sean booleanas. Incluso puede mezclar y combinar variables booleanas con variables no booleanas. En esta sección, repasaremos algunos ejemplos que ilustran el uso del operador o con variables de diferentes tipos de datos.

En términos generales, cualquier objeto o variable en Python se considera Verdadero a menos que su clase tenga un método predefinido __bool__() que devuelva Falso o un método __len__() que devuelva 0.

En términos simples, eso significa que los únicos objetos que se consideran Falsos son aquellos que están predefinidos como Falsos o los que están vacíos: listas vacías, tuplas, cadenas, diccionarios... La documentación oficial de Python nos da la lista de algunos de los objetos incorporados más comunes que se consideran Falso:

  • Constantes definidas como falsas: Ninguna y Falsa.
  • Cero de cualquier tipo numérico: 0, 0.0, 0j, Decimal(0), Fracción(0, 1)
  • Secuencias y colecciones vacías: '', (), [], {}, set(), range(0)

{.icon aria-hidden=“true”}

Nota: Estos también se conocen como Valores falsos: los que intuitivamente podría reducir a un valor booleano Falso. Los valores opuestos son Valores de verdad.

Otro hecho muy importante es que el operador o en este caso devuelve el objeto real, no el valor Verdadero/Falso del objeto.

Echemos un vistazo al ejemplo que ilustra el comportamiento mencionado:

1
exp = {} or 'This is a string'

Como se indicó anteriormente, el primer operando - {} (diccionario vacío) se considera Falso y el segundo operando - 'Esta es una cadena' (no una cadena vacía) se considera Verdadero. Esto significa que la expresión anterior se transforma implícitamente en:

1
# exp = False or True

Aquí, exp se evalúa como True. Pero, cuando tratamos de imprimir el valor exp original, en lugar de True, la salida será:

1
'This is a string'

Este ejemplo ilustra el caso en el que el operador o devuelve el objeto mismo en lugar de su valor Verdadero/Falso. Para resumir este comportamiento, podemos ilustrarlo con la tabla alterada (de verdad) del operador o:


objeto1 (valor) objeto2 (valor) objeto1 `o` objeto2 (valor devuelto) Verdadero Verdadero objeto1 Verdadero Falso objeto1 Falso Verdadero objeto2 Falso Falso objeto2


Esto también se aplica cuando combinamos valores y objetos booleanos habituales en expresiones booleanas.

Si la expresión contiene al menos un valor que se considera “Verdadero”, el valor de la expresión es “Verdadero”, pero el valor devuelto puede variar según el primer elemento “Verdadero” que contenga.

Si el primer operando Verdadero que se encuentra en la expresión es un valor booleano simple, el valor devuelto será Verdadero, pero si el primer elemento Verdadero es algún tipo de objeto, el valor devuelto será ese objeto sí mismo. Por ejemplo, la siguiente expresión devolverá Verdadero:

1
0 or True 

Y la siguiente expresión devolverá [1, 2, 3], que es el primer operando Verdadero encontrado:

1
False or [1, 2, 3]

Por otro lado, si una expresión booleana es False, lo que significa que no se encontró ningún operando True, su valor de retorno será su último operando, ya sea objeto o False:

1
2
{} or 0.0 or [] or False or ()
# Output >> ()

Conclusión

En esta guía, hemos explicado el uso del operador o en Python. Presentamos la sintaxis en Python y describimos cómo el operador o evalúa las expresiones booleanas y cómo determina el valor de retorno adecuado en función de los operandos.

Además de su uso principal para evaluar expresiones booleanas, el operador o también puede ser bastante útil en otros casos de uso.

Sus características lo convierten en una buena opción cuando necesita establecer valores predeterminados para algunas variables o un valor de retorno predeterminado de una función y mucho más, pero esos casos de uso especiales están mucho más allá del alcance de este artículo, por lo que le dejaremos Explore todos los casos de uso en los que se puede utilizar el operador o.

Licensed under CC BY-NC-SA 4.0