Acabo de saber que hay valores de Verdad y Falsa en Python que son diferentes de los normales True
y False
?
¿Alguien puede explicar en profundidad qué son los valores verdaderos y falsos ?
¿Dónde debo usarlos?
¿Cuál es la diferencia entre la verdad y los True
valores y la falsedad y los False
valores?
bool(value)
resultaTrue
, entoncesvalue
es verdad .__nonzero__
y__bool__
Respuestas:
Como se describe en los comentarios, solo se refiere a los valores que se evalúan como Verdadero o Falso.
Por ejemplo, para ver si una lista no está vacía, en lugar de marcar así:
Simplemente puede hacer esto:
Esto se debe a que algunos valores, como las listas vacías, se consideran falsos cuando se evalúan para un valor booleano. Las listas que no están vacías son verdaderas.
De manera similar, para el entero 0, la cadena vacía "", etc., para Falso, y enteros distintos de cero, cadenas no vacías, etc., para Verdadero.
La idea de términos como "verdad" y "falsedad" simplemente se refiere a aquellos valores que se consideran verdaderos en casos como los descritos anteriormente, y aquellos que se consideran falsos.
Por ejemplo, una lista vacía (
[]
) se considera "falsa" y una lista que no está vacía (por ejemplo,[1]
) se considera "veraz".Consulte también esta sección de la documentación .
fuente
if my_list
significa "si mi_lista no está vacía" yif not my_list
significa "si mi_lista está vacía".if a:
¿qué significa este tipo de condiciones? ¿Significa si a es verdadero o significa si a es falso? ¿O significa si a es verdadero o si a es falso?if []:
nunca lo ejecutaría.Todos los valores se consideran "verdaderos" excepto los siguientes, que son "falsos":
None
False
0
0.0
0j
Decimal(0)
Fraction(0, 1)
[]
- un vacíolist
{}
- un vacíodict
()
- un vacíotuple
''
- un vacíostr
b''
- un vacíobytes
set()
- un vacíoset
range
, comorange(0)
obj.__bool__()
devolucionesFalse
obj.__len__()
devoluciones0
Un valor "veraz" satisfará la verificación realizada por
if
owhile
declaraciones. Usamos "verdad" y "falsedad" para diferenciar de losbool
valoresTrue
yFalse
.Prueba de valor de verdad
fuente
__bool__
primero, luego__len__
. Si no se define ninguno, todas las instancias se consideran "verdaderas". Esto se discute en los documentos delobject.__bool__
métodotimedelta(0)
es como cero. Esto surgió cuando se descubrió que los valores de tiempo que representan la medianoche eran falsos, lo que finalmente se solucionó: lwn.net/Articles/590299Los valores de verdad se refieren a los objetos utilizados en un contexto booleano y no tanto al valor booleano que devuelve verdadero o falso. Tómelos como ejemplo:
fuente
Python determina la veracidad aplicándola
bool()
al tipo, que devuelveTrue
oFalse
que se usa en una expresión comoif
owhile
.Aquí hay un ejemplo de una clase personalizada
Vector2d
y su instancia regresaFalse
cuando la magnitud (longitud de un vector) es 0, de lo contrarioTrue
.Nota: Si no lo hubiéramos definido
__bool__
, siempre devolvería True, ya que las instancias de una clase definida por el usuario se consideran verdaderas de forma predeterminada.Ejemplo del libro: "Fluidez en Python, programación clara, concisa y efectiva"
fuente
¿Dónde debería usar los valores de Verdad o Falsedad? Estos son azúcar sintáctico , por lo que siempre puede evitarlos, pero usarlos puede hacer que su código sea más legible y lo hará más eficiente. Además, los encontrará en muchos ejemplos de código, ya sea en python o no, porque se considera una buena práctica.
Como se mencionó en las otras respuestas, puede usarlas en pruebas if y bucles while. Aquí hay otros dos ejemplos en pitón 3 con los valores predeterminados en combinación con
or
,s
siendo una variable de cadena. También se extenderá a situaciones similares.Sin verdad
con la verdad es más conciso:
En Python 3.8, podemos aprovechar la expresión de asignación
:=
sin verdad
con la verdad es mas corto tambien
o incluso más corto,
Sin la expresión de asignación, uno puede hacer
pero no más corto. Algunas personas encuentran la
s =...
línea insatisfactoria porque corresponde ano obstante, puede adherirse a este estilo de codificación si se siente cómodo con él.
fuente
Si ejecuta este bucle, verá que while 0: = while falso:
0 se considera falso
fuente
Falsy significa algo vacío como una lista vacía, tupla, como cualquier tipo de datos que tenga valores vacíos o Ninguno. Verdad significa: Excepto que son Verdad
fuente