L'unico confronto significativo si può davvero utilizzare con None
è if obj is None:
(o if obj is not None:
).
Il confronto tra diversi tipi è stato rimosso da Python 3 per buone ragioni: erano una fonte comune di errori e causa confusione. Per esempio
>>> "3" < 4
False
In Python 3, si ottiene un TypeError
quando si confrontano i valori di tipo diverso, come str
vs. int
o niente contro None
.
>>> None < 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: NoneType() < int()
(intendo "a confronto", nel senso di cercare di determinare quale dei due valori è maggiore/minore di confronto per l'uguaglianza è OK -. Sarà sempre tornare False
se due oggetti sono di diversi tipi.)
non hanno trovato un punto di riferimento nella documentazione di questo, ma in Learning Python, 4th edition, Mark Lutz scrive a pagina 204:
[...] Comparisons of differently typed objects (e.g., a string and a list) work — the language defines a fixed ordering among different types, which is deterministic, if not aesthetically pleasing. That is, the ordering is based on the names of the types involved: all integers are less than all strings, for example, because "int"
is less than "str"
.
fonte
2012-01-22 12:27:54
'==' e '! =' Sono solitamente sicuri, ma si suppone di utilizzare 'è none' e' non è none' per single come 'none' secondo [PEP-8] (http://www.python.org/dev/peps/pep-0008/) – ThiefMaster
@ThiefMaster L'intero punto della domanda è cosa significa * sicuro * significa qui. Sono ben consapevole che si dovrebbe usare 'is' per il confronto con' None' ma la domanda è specifica e non si chiede quale operatore debba essere usato. –
http://bugs.python.org/issue1673405 – wim