Что лучше? (И почему?)Каков правильный способ проверки False?
if somevalue == False:
или
if somevalue is False:
ли ваши изменения, если ответ somevalue
является строкой?
Что лучше? (И почему?)Каков правильный способ проверки False?
if somevalue == False:
или
if somevalue is False:
ли ваши изменения, если ответ somevalue
является строкой?
Это скорее зависит от того, что somevalue
может быть: если somevalue
может быть все, что вы могли бы проверить, что это логическое и not
:
if isinstance(somevalue, bool) and not somevalue
это не полагается на False
быть синглтон. Если это всегда одноэлементно вы также можете сделать:
if somevalue is False
Но PEP8 Питона заявляет вы не должны заботиться если это о классе и просто использовать:
if not somevalue
это будет оценивать, является ли somevalue
«ложным». См. Python documentation on Truth value testing.
PEP8 состояния:
Не сравнивайте булевы значения Истина или Ложь, используя ==.
и дает эти примеры:
Yes: if greeting:
No: if greeting == True:
Worse: if greeting is True:
, который транслирует в вашем случае:
Yes: if not greeting:
No: if greeting == False:
Worse: if greeting is False:
Имейте в виду, что каждая строка считается "truthy" за исключением пустой строки ''
.
is
проверяет, являются ли два объекта буквально тот же объект. ==
проверяет равенство.
Если вы хотите проверить, что-то ложно, например. ноль, противоположный True
, do if something == False
.
Как уже упоминалось в комментариях, вы можете сделать if not something
, это может улучшить читаемость совсем немного, но это то же самое, что и if bool(something) == False
.
Я предпочитаю равенство, потому что, на мой взгляд, True
и False
должны вести себя так же, как и 1
0
в том смысле, истинного или ложные. Например, ("a" == "a") == False
оценивает по: False
точно так же, как ("a" == "a") == 0
.
Звучит слишком домашнее задание. – firegurafiku
Я бы написал 'if not somevalue:' хотя для небулевых типов он будет вести себя по-другому: 'if not '": 'будет запускать код, но' if "" == False: 'не будет. – rodrigo
Обычно вы явно не сравниваете объекты с 'False' /' True' в Python. Просто выполните 'if somevalue:' или 'if not somevalue:' –