为什么使用 not() 运算符有时会出现 SyntaxError?

Why is using not() operator sometimes a SyntaxError?

这个有效:

>>> not(True)
False
>>> a = {}
>>> a["hidden"] = False
>>> a["hidden"] = not(a["hidden"])
>>> a["hidden"]
True

但不是这个:

def toggleHelp(self, event):
    # 
    if (self.special_frame["hidden"] == False):
        self.special_frame.grid_remove()
    else:
        self.special_frame.grid()
    self.special_frame["hidden"] == not(self.special_frame["hidden"])

错误

 line 563
    self.special_frame["hidden"] == not(self.special_frame["hidden"])
                                      ^
SyntaxError: invalid syntax

在初始化中:

self.special_frame["hidden"] = False

我做错了什么?

我很确定您只需要一个等号,也许这是个错误。 =用于赋值,==用于比较。

问题是在需要 = 的地方使用了 ==。这通常不会导致语法错误,但在您的情况下,您有:

a == not(b)

等同于:

a == not b

这组为:

(a == not) b

这会导致语法错误。

另一方面,赋值运算符的优先级较低,因此:

a = not b

分组为:

a = (not b)

很好。