¿Qué es la verdad y la mentira? ¿En qué se diferencia de Verdadero y Falso?

Resuelto asked hace 8 años • 8 respuestas

Acabo de enterarme de que hay valores verdaderos y falsos en Python que son diferentes de los valores normales Truey False.

¿ Alguien puede explicar en profundidad qué son los valores verdaderos y falsos ? ¿Dónde debería usarlos? ¿ Cuál es la diferencia entre verdad y Truevalores y falsedad y Falsevalores?


Ver también:

* ¿Cómo actúan "y" y "o" con valores no booleanos?
* Identidad booleana == Verdadero vs es Verdadero
* Valor booleano de objetos en Python

 avatar Oct 12 '16 01:10
Aceptado

Usamos "verdadero" y "falso" para diferenciarnos de los boolvalores Truey False. Un valor "veraz" satisfará la verificación realizada por las declaraciones ifo while. Como se explica en la documentación , todos los valores se consideran "verdaderos", excepto los siguientes, que son "falsos":

  • None
  • False
  • Números que son numéricamente iguales a cero, incluidos:
    • 0
    • 0.0
    • 0j
    • decimal.Decimal(0)
    • fraction.Fraction(0, 1)
  • Secuencias y colecciones vacías, que incluyen:
    • []- un vacíolist
    • {}- un vacíodict
    • ()- un vacíotuple
    • set()- un vacíoset
    • ''- un vacíostr
    • b''- un vacíobytes
    • bytearray(b'')- un vacíobytearray
    • memoryview(b'')- un vacíomemoryview
    • un vacío range, comorange(0)
  • objetos para los cuales
    • obj.__bool__()devolucionesFalse
    • obj.__len__()devuelve 0, dado que obj.__bool__no está definido
Patrick Haugh avatar Oct 11 '2016 18:10 Patrick Haugh

Como se describe en los comentarios, solo se refiere a valores que se evalúan como Verdadero o Falso.

Por ejemplo, para ver si una lista no está vacía, en lugar de verificar así:

if len(my_list) != 0:
   print("Not empty!")

Simplemente puedes hacer esto:

if my_list:
   print("Not empty!")

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 no vacías son verdaderas.

De manera similar, para el número entero 0, la cadena vacía "", y así sucesivamente, para Falso, y los enteros distintos de cero, cadenas no vacías, etc., para Verdadero.

La idea de términos como "verdadero" y "falso" simplemente se refiere a aquellos valores que se consideran Verdaderos en casos como los descritos anteriormente, y aquellos que se consideran Falso.

Por ejemplo, una lista vacía ( []) se considera "falsa" y una lista no vacía (por ejemplo, [1]) se considera "veraz".

Consulte también esta sección de la documentación .

B. Eckles avatar Oct 11 '2016 18:10 B. Eckles

Python determina la veracidad aplicándolo bool()al tipo, que devuelve Trueo Falseque se usa en una expresión como ifo while.

A continuación se muestra un ejemplo de una clase personalizada Vector2dy su instancia regresa Falsecuando la magnitud (longitud de un vector) es 0; de lo contrario True.

import math
class Vector2d(object):
    def __init__(self, x, y):
        self.x = float(x)
        self.y = float(y)

    def __abs__(self):
        return math.hypot(self.x, self.y)

    def __bool__(self):
        return bool(abs(self))

a = Vector2d(0,0)
print(bool(a))        #False
b = Vector2d(10,0)    
print(bool(b))        #True

Nota: Si no lo hubiéramos definido, __bool__siempre devolvería Verdadero, ya que las instancias de una clase definida por el usuario se consideran verdaderas de forma predeterminada.

Ejemplo del libro: "Programación fluida en Python, clara, concisa y eficaz"

user1767754 avatar Oct 12 '2018 16:10 user1767754