PEP8 утверждает, что проверки для None
должны выполняться с использованием is None
. То же самое справедливо и для одиночных особей. Но PEP8 также говорится, что равенство истины и лжи не должно быть выполнена с использованием оператора, is
будучи еще хуже, чем ==
:Почему сравнение с True/False с использованием оператора is is bad?
Yes: if greeting:
No: if greeting == True:
Worse: if greeting is True:
Я понимаю, что первое из них является симпатичным и наиболее вещим способом, но иногда я найти себя в ситуации, когда я хочу явно показать, что сравниваюсь с True
или False
. Как is
хуже, чем ==
в этой ситуации?
Обратите внимание, что '__bool__' - это Python 3.X, а эквивалент Python 2.X -' __nonzero__'. Кроме того, если вы столкнулись с проблемой определения '__bool__', то' if MyBool() 'будет по-прежнему самым лучшим испытанием на истинность pythonic. –