The interpreter only obeys python's grammar which says that both sides of a comparison operator must be "or_expr"s (one of python's syntactic categories). An expression like not ... can not be considered an or_expr. With parenthesis, it becomes an "atom", which can be considered as an "or_expr".
Grammar is a cold mechanism, don't think python does anything clever here :)

not is expression operator, and there can not also be applied type operators, even it is like function

>>> type(not)
SyntaxError: invalid syntax
>>> type(+)
SyntaxError: invalid syntax
>>> True == --1
>>> def not_(e):
    return not e

>>> type(not_)
<type 'function'>
>>> 0 == not_(1)

Edited 3 Years Ago by pyTony

This article has been dead for over six months. Start a new discussion instead.