Почему в Python преобразование к bool работает именно так?

Why is this work?

>>> bool('1==1')
True
>>> bool('1=1')
True
>>> 1 == 1
True
>>> 1=1
  File "<stdin>", line 1
SyntaxError: cannot assign to literal
>>>                                  

Ответы (1 шт):

Автор решения: Alpensin
bool('1==1')
bool('1=1')

Строки '1==1' и '1=1' не пустые, поэтому True. Это просто строки, там может быть любой текст. Питон не интерпретирует их как-то по особенному. Можно там написать "привет, Мир!" и будет True.

1 == 1

Питон сравнивает два объекта. Они равны, поэтому True

1=1

Тут объект со значением 1 присваивается переменной с названием 1. Названия переменных не могут начинаться с цифры и тем более быть цифрой полностью. Поэтому появляется ошибка.

→ Ссылка