Есть ли разница между == False и нет при проверке пустой строки?

Я читал в другом месте в stackoverflow, что самый элегантный способ проверить пустую строку в Python (например, скажем, это строка с именем response):

if not response:
    # do some stuff 

Причина в том, что строки могут оцениваться как логические объекты.

Итак, мой вопрос: говорит ли приведенный ниже код то же самое?

if response == False:
    # do some stuff

person patchwork    schedule 29.04.2016    source источник
comment
второй не будет выполняться, если ответ НЕТ   -  person Avinash Raj    schedule 29.04.2016


Ответы (2)


Как уже говорилось, разница есть.

not response проверяет, bool(response) == False или нет, если len(response) == 0, поэтому лучше всего проверить, не пусто ли что-то, None, 0 или False. См. документацию python о том, что считается "ложным". .

Другой вариант просто проверяет, если response == False, и это только в том случае, если и только если response is False. Но пустая строка is not False!

person MSeifert    schedule 29.04.2016

Есть ли разница? Да: один работает, а другой нет.

if response == False истинно только в том случае, если фактическое значение response равно False. Для пустой строки это не так.

if not response, с другой стороны, проверяет, является ли response ложным; то есть это одно из значений, которые Python принимает как false в логическом контексте, который включает None, False, пустую строку, пустой список и т. д. Это эквивалентно if bool(response) == False.

person Daniel Roseman    schedule 29.04.2016