tutorial lenguaje español descargar python

python - lenguaje - ¿Qué es la verdad y la falsa? ¿Cómo es diferente de verdadero y falso?



python tutorial (4)

¿Acabo de saber que hay valores de True y False en Python que son diferentes de los valores True y False normales?

¿Alguien puede explicar en profundidad qué son los valores de verdad y falsedad ?

¿Dónde debería usarlos?

¿Cuál es la diferencia entre verdad y valores True y falso y valores False ?


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 entero 0, la cadena vacía "", y así sucesivamente, para enteros falsos y no 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 no vacía (por ejemplo, [1] ) se considera "verdadera".

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


Los 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:

>>> bool([]) False >>> bool([1]) True >>> bool('''') False >>> bool(''hello'') True


Python determina la veracidad aplicando bool() al tipo, que devuelve True o False que se usa en una expresión como if o while .

Aquí hay un ejemplo para una clase personalizada Vector2d y su instancia devuelve False cuando 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 hubiéramos definido __bool__ , siempre devolvería True, ya que las instancias de una clase definida por el usuario se consideran verdaderas por defecto.

Ejemplo del libro: "Fluidez en Python, programación clara, concisa y efectiva"


Todos los valores se consideran "verdaderos", excepto los siguientes, que son "falsos":

  • None
  • False
  • 0
  • 0.0
  • 0j
  • Decimal(0)
  • Fraction(0, 1)
  • [] - una list vacía
  • {} - un dict vacío
  • () - una tuple vacía
  • '''' - un str vacío
  • b'''' - un bytes vacío
  • set() - un set vacío
  • un range vacío, como el range(0)
  • objetos para los cuales
    • obj.__bool__() devuelve False
    • obj.__len__() devuelve 0

Un valor "verdadero" satisfará la verificación realizada por las declaraciones if o while . Usamos "verdad" y "falsedad" para diferenciarnos de los valores bool True y False .

Prueba de valor de verdad