布尔值是否有"and ="运算符?

nic*_*anc 4 python boolean operators

有"+ ="运算符,即int.

a = 5
a += 1
b = a == 6 # b is True
Run Code Online (Sandbox Code Playgroud)

bool是否有"and ="运算符?

a = True
a and= 5 > 6 # a is False
a and= 5 > 4 # a is still False
Run Code Online (Sandbox Code Playgroud)

我知道,这个'和''运算符对应于:

a = True
a = a and 5 > 6 # a is False
a = a and 5 > 4 # a is still False
Run Code Online (Sandbox Code Playgroud)

但是,我经常做这个操作,我认为它看起来不是很整洁.

谢谢

Nic*_*son 10

是的 - 你可以使用&=.

a = True
a &= False  # a is now False
a &= True   # a is still False
Run Code Online (Sandbox Code Playgroud)

您可以类似地使用|="或=".

应该注意(如下面的评论中)这实际上是一个按位操作; 它只有a以布尔值开头时才会有预期的行为,并且操作只能用布尔值来执行.

  • 这是你能用现在语言得到的最接近的,但它并不是所要求的:这些运算符*按*和和或.当任何一方的价值不是严格的布尔值时,差异就很重要. (7认同)
  • `&=`是按位运算,但问题是要求布尔运算,你应该指出差异. (2认同)