Подтвердить что ты не робот

Логический парадокс в питоне?

Я подошел к этому, где "не 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

Может кто-нибудь объяснить, почему это происходит?

4b9b3361

Ответ 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
>>>

Я думаю, это ясно.