Usted debe darse cuenta de que None
, False
y True
son los únicos.
Por ejemplo, if foo is not None
significa que foo
tiene algún valor que no sea None
. Esto funciona igual que tener if foo
que es básicamente if foo == True
. Por ejemplo, not None
y True
funcionan de la misma manera. Además, None
y False
funcionan de la misma manera.
>>> foo = not None
>>> bool(foo)
True
>>> foo = 5 # Giving an arbitrary value here
>>> bool(foo)
True
>>> foo = None
>>> bool(foo)
False
>>> foo = 5 # Giving an arbitrary value here
>>> bool(foo)
True
Lo importante darse cuenta y estar al tanto de cuando la codificación es que cuando se comparan dos cosas, None
necesita is
, pero True
y False
==
necesidad. Evite if foo == None
y haga solo if foo is None
y evite if foo != None
y haga solo if foo is not None
. En el caso de if foo is not None
, simplemente haga if foo
. En el caso de if foo is None
, simplemente haga if not foo
.
Nota: True
es básicamente 1
y False
es básicamente 0
. En los viejos tiempos de Python, solo teníamos 1
para un valor verdadero y teníamos 0
para un valor de falso. Es más comprensible y amigable decir True
en lugar de 1
y más comprensible y amigable para los humanos decir False
en lugar de 0
.
http://stackoverflow.com/questions/2017230/why-arent-and-and-or-operators-in-python y muchos otros. –
posible duplicación de operaciones ["Booleanas" en Python (es decir: el y/o los operadores)] (http://stackoverflow.com/questions/3826473/boolean-operations-in-python-ie-the-and-or- operadores) –
@SilentGhost: Si None se considera igual que False, ¿por qué devuelve None en lugar de False? ¿No debería un RO aplicado a dos valores falsos devolver False? – yoshi