В конце 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:
?