Есть ли любое различие между:
if foo is None: pass
и
if foo == None: pass
Конвенция, которую я видел в большей части кода Python (и код I сам запись) является первым, но я недавно столкнулся с кодом, который использует последнего. Ни один не экземпляр (и единственный экземпляр, IIRC) NoneType, таким образом, он не должен иметь значения, правильно? Есть ли какие-либо обстоятельства, при которых это могло бы?
Причина, по которой foo is None
является предпочтительным способом, заключается в том, что вы можете работать с объектом, который определяет свой собственный __eq__
, и который определяет объект равным None. Поэтому всегда используйте foo is None
, если вам нужно проверить, действительно ли он None
.