LINUX.ORG.RU

Тупые вопросы по Python - 1. Логические типы

 


0

1

Слегка не понял логические выражения в Python

if "Something":
    print("Something look as True")
else:
    print("Something no look as True")
    
if "Something" == True:
    print("Something is True")
else:
    print("Something is not True")

Результат работы

Something look as True
Something is not True

WTF?

Первый результат понятен. «Something» не пустая строка и это в логических выражениях тоже, что и True. А вот второй не совсем понял. Если бы я True в кавычки взял, то было бы сравнение строк, а так вроде тоже строка должна как булевое выражение восприняться.

★★★★★

Последнее исправление: praseodim (всего исправлений: 1)

Ответ на: комментарий от praseodim

Сравниваются во втором случае не логические значения, а Value объектов

да

заведомо False, если они разных типов.

не всегда

Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 1==1.
True
>>> True==1
True
>>> True==1.
True
>>> True==1.1
False
>>> 0==False
True
>>> 0.==False
True

В общем случае это зависит от того, как перегружена операция сравнения.

А еще в питоне есть операция is которая сравнивает один и тот же это обьект или нет;-)

AntonI ★★★★
()

Именно поэтому я предпочитаю делать явное приведение типа перед тем, как обрабатывать входные аргументы:

>>> if bool("Something") == True:
...     print("Something is True")
... else:
...     print("Something is not True")
... 
Something is True

byko3y ★★★★
()