Логический парадокс в питоне?
Я подошел к этому, где "не None" равно одновременно True и False.
>>> not None
True
>>> not None == True
True
>>> not None == False
True
Сначала я ожидал, что это будет из-за порядка операторов, но при тестировании аналогичного выражения:
>>> not False
True
>>> not False == False
False
>>> not False == True
True
Может кто-нибудь объяснить, почему это происходит?
Ответы
Ответ 1
Это связано с приоритетом оператора. not none == True
означает not (None == True)
означает None != True
, что верно. Точно так же верно и t23. Значение None
отличается от булевых.
Ваши последние два выражения означают False != False
, который является ложным, и False != True
, который является истинным.
Ответ 2
Это действительно связано с приоритетом оператора. not None == False
будет оцениваться как not (None == False)
. None == False
- False
, что объясняет ваши результаты.
Попробуйте это вместо:
>>> (not None) == True
True
>>> (not None) == False
False
Ответ 3
>>> not None
True
>>> not None == True
True
>>> not None == False
True
>>> (not None) == True
True
>>> (not None) == False
False
Ответ 4
Это порядок расширения. python читает их так:
o>>> not (None == True)
True
>>> not (None == False)
True
>>> not False
True
>>> not (False == False)
False
>>> not (False == True)
True
>>>
Я думаю, это ясно.