Tengo una pregunta sobre la identidad en python, soy un principiante en python y he leído algunos cursos sobre "es" palabra clave y "no es". ¿Y no entiendo por qué la operación "Falso no es Verdadero no es Verdadero no es Verdadero no es Verdadero" es igual a Falso en Python? Para mí esta operación tiene que devolver True.
3 respuestas
Python comparaciones de cadenas:
Formalmente, si
a, b, c, …, y, z
son expresiones yop1, op2, …, opN
son operadores de comparación, entoncesa op1 b op2 c ... y opN z
es equivalente aa op1 b and b op2 c and ... y opN z
, excepto que cada expresión se evalúa como máximo una vez.
Tu expresión es:
False is not True is not True is not False is not True
Que se convierte en:
(False is not True) and (True is not True) and (True is not False) and (False is not True)
Lo que es equivalente a:
(True) and (False) and (True) and (True)
Que es False
.
Estás lidiando con la lógica. Es útil pensar en True = 1 y False = 0.
Piensa en ello de esta manera. 0 no es 1, eso devolverá True porque el número 0 no es el número 1 y es una declaración verdadera. Mismo concepto con verdadero y falso
0 is not 1
#this will return False
False is not True
#the computer reads this in the exact same manner.
is
se refiere a identidad .
Cuando preguntas if x is y
, ¿realmente estás preguntando si son x
y y
el mismo objeto ? (Tenga en cuenta que esta es una pregunta diferente a ¿x
y y
tienen el mismo valor? )
Del mismo modo, cuando preguntas if x is not y
, ¿realmente estás preguntando si son x
y y
objetos diferentes?
Específicamente en lo que respecta a True
y False
, Python los trata como singletons , lo que significa que solo hay un objeto False
en un programa completo. Cada vez que asigna algo a False
, esa es una referencia al único objeto False
, por lo que todos los objetos False
tienen la misma identidad .
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.