В конце python PEP8 Я читаю:
-
Не сравнивайте логические значения с True или False с помощью
==Yes: if greeting: No: if greeting == True: Worse: if greeting is True:
У меня нет проблем с этой рекомендацией, когда логическое значение True, но это звучит странно при проверке False
Если я хочу знать, является ли переменное приветствие False, почему я не должен писать:
if greeting == False:
Если я напишу if not greeting:, это будет иметь совсем другое значение, чем приведенное выше утверждение. Что, если приветствие - Нет? Что, если это пустая строка? Является ли эта рекомендация PEP8 означающей, что переменные, хранящие логические значения, должны содержать только True или False и что для этих переменных следует избегать None?
На мой взгляд, это похоже на рекомендацию, поступающую с других языков со статической типизацией и которая не подходит для python, по крайней мере, для сравнения с False.
И, кстати, кто-нибудь знает, почему if greeting is True: описывается хуже, чем if greeting == True:? Должны ли мы также понимать, что if greeting is False: также хуже, чем if greeting == False:?