翻转布尔值而不引用它两次

Gui*_*ute 5 python python-3.x

我找了很短的语法,看起来有点像x *= -1这里x是一个数字,但对于布尔值,如果存在的话。它应该表现得像b = not(b). 当变量名称很长时,感兴趣的是能够在一行中翻转布尔值。

例如,如果您有一个程序可以打开|关闭房子里的灯,您希望避免编写完整的内容:

self.lamps_dict["kitchen"][1] = not self.lamps_dict["kitchen"][1]
Run Code Online (Sandbox Code Playgroud)

Aso*_*cia 13

您可以使用异或运算符 (^)

x = True
x ^= True
print(x) # False
x ^= True
print(x) # True
Run Code Online (Sandbox Code Playgroud)

编辑:正如Guimoute在评论中所建议的那样,您甚至可以通过使用来缩短它,x ^= 1但它会将 的类型更改为x可能不是您正在寻找的整数,尽管它可以在您将其用作直接条件,if x:while x:等。