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

时间:2013-06-10 14:26:48

标签: python boolean operators

有“+ =”运算符,即int。

a = 5
a += 1
b = a == 6 # b is True

bool是否有“and =”运算符?

a = True
a and= 5 > 6 # a is False
a and= 5 > 4 # a is still False

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

a = True
a = a and 5 > 6 # a is False
a = a and 5 > 4 # a is still False

但是,我经常这样做,我觉得它看起来不太整洁。

由于

3 个答案:

答案 0 :(得分:9)

是的 - 您可以使用&=

a = True
a &= False  # a is now False
a &= True   # a is still False

您可以类似地使用|=作为“或=”。

应该注意(如下面的评论中)这实际上是一个按位操作;如果a以布尔值开头,它将具有的预期行为,并且操作仅在布尔值下执行。

答案 1 :(得分:4)

nrpeterson向您展示了如何将&=与布尔值一起使用。

我只展示如果混合布尔和整数

会发生什么
a = True
a &= 0 # a is 0
if a == False : print "hello" # "hello"

a = True
a &= 1 # a is 1
if a == False : print "hello" # nothing

a = True
a &= 2 # a is 0 (again)
if a == False : print "hello" # "hello"

a = True
a &= 3 # a is 1
if a == False : print "hello" # nothing

答案 2 :(得分:3)

您可以查看运算符库: http://docs.python.org/3/library/operator.html

这允许你做

a = True
a = operator.iand(a, 5>6) # a is False