El `truthy` y `falsy` de Python
Este artículo explica el truthy
y falsy
de Python.
YouTube Video
El truthy
y falsy
de Python
Definición de truthy
y falsy
En Python, los objetos evaluados en expresiones condicionales se consideran 'True' o 'False'. Truthy
se refiere a objetos evaluados como 'True', y falsy
se refiere a aquellos evaluados como 'False'. Estas evaluaciones se utilizan frecuentemente en ramas condicionales como declaraciones if
o bucles while
. Además, la función bool()
acepta cualquier objeto y devuelve su valor booleano.
Falsy
(Objetos evaluados como False)
En Python, los siguientes objetos se consideran falsy
:.
-
Falso
-
Nulo
-
Valores numéricos de cero
- Ejemplo:
0
,0.0
- Ejemplo:
-
Tipos de secuencias vacías (como listas, tuplas o cadenas vacías)
- Ejemplo:
[]
,()
,""
- Ejemplo:
-
Diccionario vacío
- Ejemplo:
{}
- Ejemplo:
-
Conjunto vacío
- Ejemplo:
set()
- Ejemplo:
Estos objetos se evalúan como 'falsy' cuando se usan en la condición de una declaración if
. Por ejemplo, puedes escribir código como este.
1if not []:
2 print("The list is falsy.")
- En este código, la lista
[]
está vacía, por lo tanto se evalúa comofalsy
, y se ejecuta la declaraciónprint
.
Truthy
(Objetos evaluados como True)
Los objetos que no se consideran falsy
se consideran truthy
.
-
Números no nulos (enteros, números de punto flotante)
- Ejemplos:
1
,3.14
,-100
- Ejemplos:
-
Tipos de secuencias no vacías (listas, tuplas, cadenas, etc.)
- Ejemplos:
[1, 2, 3]
,(1, 2)
,"Hello"
- Ejemplos:
-
Diccionarios no vacíos
- Ejemplo:
{"key": "value"}
- Ejemplo:
-
Conjuntos no vacíos
- Ejemplo:
{1, 2, 3}
- Ejemplo:
Los objetos considerados truthy
se evaluarán como 'True' cuando se usen en la condición de una sentencia if
. Por ejemplo, puedes escribir código como este.
1if [1, 2, 3]:
2 print("The list is truthy.")
- En el código anterior, como la lista
[1, 2, 3]
no está vacía, se evalúa comotruthy
y se ejecuta la sentenciaprint
.
Evaluar el valor booleano con la función bool()
Puedes evaluar el valor booleano de los objetos usando la función bool()
.
1# Examples of falsy values
2print("False is", "truthy" if bool(False) else "falsy")
3print("0 is", "truthy" if bool(0) else "falsy")
4print('"" is', "truthy" if bool("") else "falsy")
5print("None is", "truthy" if bool(None) else "falsy")
6print("[] is", "truthy" if bool([]) else "falsy")
7
8# Examples of truthy values
9print("1 is", "truthy" if bool(1) else "falsy")
10print('"hello" is', "truthy" if bool("hello") else "falsy")
11print('" " (space) is', "truthy" if bool(" ") else "falsy")
12print('"0" is', "truthy" if bool("0") else "falsy")
- Este código demuestra cómo se evalúa el valor de verdad de varios valores. Por ejemplo, el valor numérico
0
y una cadena vacía se consideranFalse
, mientras que un espacio o la cadena"0"
se consideranTrue
.
Utilizando truthy
y falsy
Al utilizar truthy
y falsy
, el código se puede escribir de forma más concisa e intuitiva. En particular, las declaraciones if
a menudo pueden evaluarse sin comparaciones explícitas para hacerlas más cortas. Por ejemplo, los siguientes dos fragmentos de código se comportan de manera similar, pero el primero es más conciso.
1my_list = [1]
2
3# Explicit comparison
4if my_list != []:
5 print("The list is not empty.")
6
7# Using truthy/falsy
8if my_list:
9 print("The list is not empty.")
En el ejemplo anterior, puedes ver que my_list
se evalúa como truthy
siempre que no sea una lista vacía, lo que elimina la necesidad de una comparación explícita.
Diseñar con truthy
y falsy
Al utilizar eficazmente los conceptos de truthy
y falsy
, puedes mejorar la legibilidad y eficiencia del código. Son particularmente útiles para establecer valores predeterminados, verificar la validez de variables y la validación de entradas. Por ejemplo, si esperas que se pasen None
o una lista vacía como argumentos, puedes escribir código como este.
1def process_data(data=None):
2 data = data or []
3 print(data)
4
5process_data() # An empty list is used by default.
- En este código, si
data
esNone
, una lista vacía[]
se establece como valor predeterminado. De esta manera, el uso detruthy
yfalsy
te permite establecer valores predeterminados de forma concisa.
Puntos a tener en cuenta para evitar comportamientos no deseados
Sin embargo, aunque el código que usa valores truthy
y falsy
puede ser conciso y conveniente, hay que tener en cuenta que puede causar comportamientos no deseados. Por ejemplo, en este código, no solo cuando data
es None
, sino también cuando es cualquier valor evaluado como False
, como una cadena vacía o 0
, será reemplazado por la lista vacía predeterminada []
. Por esta razón, cuando se requiere una condición más estricta, como inicializar solo cuando el valor es None
, se recomienda usar una condición explícita como value is None:
. Dependiendo de la situación, es importante diseñar teniendo en cuenta un equilibrio entre la concisión y el rigor.
1def process_data(data=None):
2 if data is None:
3 data = []
4 print(data)
5
6process_data() # An empty list is used by default.
7process_data(0) # 0 is printed because it's not None.
- En este código,
data
se inicializa como una lista vacía solo si esNone
, mientras que otros valores falsos como0
se dejan tal como están.
Controlar el valor booleano en objetos personalizados
Incluso en tus propias clases, puedes controlar el valor booleano de una instancia definiendo __bool__()
o __len__()
.
1class MyContainer:
2 def __init__(self, items):
3 self.items = items
4
5 def __len__(self):
6 return len(self.items)
7
8box = MyContainer([])
9print(bool(box)) # False
10
11box.items.append("item")
12print(bool(box)) # True
- En este código, el método
__len__()
hace que el contenedor se evalúe comoFalse
cuando está vacío y comoTrue
cuando tiene elementos.
Conclusión
Los conceptos de truthy
y falsy
en Python son muy importantes para escribir expresiones condicionales concisas y hacer el código más intuitivo. Comprender y utilizar correctamente estos conceptos puede mejorar significativamente la legibilidad y eficiencia del código.
Puedes seguir el artículo anterior utilizando Visual Studio Code en nuestro canal de YouTube. Por favor, también revisa nuestro canal de YouTube.