Python语法错误不是()操作
问题描述:
这工作:Python语法错误不是()操作
>>> not(True)
False
>>> a = {}
>>> a["hidden"] = False
>>> a["hidden"] = not(a["hidden"])
>>> a["hidden"]
True
但不是这样的:
def toggleHelp(self, event):
# https://stackoverflow.com/questions/10267465/showing-and-hiding-widgets#10268076
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
在init:
self.special_frame["hidden"] = False
我做错了什么?
答
的问题是,你需要=
使用==
。这通常不会导致一个语法错误,但在你的情况,你有:
a == not(b)
这是一样的:
a == not b
这组为:
(a == not) b
和导致语法错误。
赋值运算符,而另一方面,具有较低的优先级,所以:
a = not b
基团:
a = (not b)
这是好的。
+0
是......如果真的需要的话,可以使用'a ==(not(b))'...但是...无论如何 - 链接到[运算符优先级]可能很有用(https://docs.python .org/3/reference/expressions.html#operator-precedence)... –
+0
@JonClements完全一样。 –
答
我敢肯定,你只需要一个等号,也许这就是错误。 =
为assignement和==
用于比较。
'not'被用作一个操作符,而不是作为一个功能。坏:“不(真)”;好:不是真的。 –
问题是''==操作符。将其更改为'=',语法错误将消失。此外,您通常不希望使用'不(X)',只是用'不x'除非你真的需要括号出于某种原因。 –