El tipo booleano, en términos generales, es una forma de representación de datos binarios, es decir, dos valores posibles únicamente: 0 (cero) y 1 (uno). Su nombre proviene del matemático George Boole, inventor de la Álgebra Booleana que precede a la aplicación en el campo de la programación.
Los dos valores posibles de este tipo de dato se prestan a diversas intepretaciones: Sí/No, Encendido/Apagado, Verdadero/Falso, entre otras; todo aquello que represente dos estados contrarios. En Python y los demás lenguajes de programación, se ha optado por las constantes True
(1, verdadero) y False
(0, falso).
>>> int(True) 1 >>> int(False) 0 >>> True == 1 True >>> False == 0 True
Teniendo esto en cuenta, puedes operar con estas constantes como datos numéricos, ya que True
y False
son instancias del tipo bool
, que hereda del tipo int
.
>>> True + 1 2 >>> False - 1 -1 >>> (1 > 0) + 5 6
Sin embargo, al momento de evaluar una expresión, Python considera a todo valor distinto de cero como True
y, por lo tanto, al cero como False
. Observemos:
>>> bool(5) True >>> bool(0) False >>> bool(-3) True
Este tipo de comprobación es la que se produce al utilizar las sentencias if
o elif
, se evalúa la expresión y, en caso de ser ésta verdadera, se ejecuta el código a continuación.
if 5: # bool(5) -> True print("Este código es ejecutado.") if 0: # bool(0) -> False print("Nunca se ejecuta.")
Por lo tanto, es redundante igualar las expresiones condicionales con alguno de los dos valores.
a = True if a == True: # True == True print("Este código es ejecutado.")
Es directamente incorrecto emplear is
para este tipo de comprobaciones (if a is True:
). Simplemente debe utilizarse if a:
.
La palabra not
retorna el valor opuesto de aquel que se encuentre a su derecha.
>>> not True False >>> not False True
De esta manera, el código resulta fácilmente legible. Por ejemplo:
encendido = False if not encendido: # not False -> True encender()
Al utilizarse el operador and
(«y») en una condición, todas las expresiones deben ser verdaderas para que ésta llegue a ejecutarse.
>>> True and False False >>> True and True True >>> False and False False
Otros ejemplos:
encendido = False conectado = True if not encendido and conectado: # (not False -> True) and True -> True encender()
No así el operador or
(«o»), el cual retornará True
si cualquiera de las expresiones es verdadera.
>>> True or False True >>> True or True True >>> False or False False
De hecho, Python omite las demás expresiones al encontrar una verdadera.
>>> if 2 > 1 or b: ... print("Ejecutar.") ... Ejecutar.
El objeto b
no ha sido definido, sin embargo, el código corre sin problemas, debido a que no es necesario verificar su valor porque ya ha encontrado una expresión verdadera anteriormente. No así al utilizar and
.
>>> if 2 > 1 and b: ... print("Ejecutar.") ... Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'b' is not defined
Para otro tipos de datos, como cadenas o instancias de diversas clases, la validación dependerá de la implementación de dichos objetos. Por ejemplo, una cadena es considerada verdadera cuando no está vacía.
>>> a = "Recursos Python" >>> b = "" >>> bool(a) True >>> bool(b) False
Al momento de crear una clase, considera el método __nonzero__
en Python 2 o __bool__
en la rama 3.x.
>>> class C: ... def __nonzero__(self): # __bool__ en Python 3. ... return False ... >>> c = C() >>> bool(c) False
Si este método no está definido, se evalúa utilizando __len__
. En ausencia de ambos, la instancia será siempre considerada True
.
>>> class D: ... pass ... >>> d = D() >>> bool(d) True
Curso online 👨💻
¡Ya lanzamos el curso oficial de Recursos Python en Udemy!
Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter
en 2024.
Consultoría 💡
Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.