只是一个简单的问题。
我见过的一些python函数就是这样调用的,比如pygame:
pygame.display.set_mode((255, 255), FULLSCREEN)
这对我来说似乎很正常。
但是当你想使用多个参数时,你必须使用|。例如:
pygame.display.set_mode((255, 255), FULLSCREEN | HWSURFACE | DOUBLEBUF)
你何时以及为什么要这种电话?我听说它是按位OR运算符,但它似乎只适用于布尔值。这是如何工作的?
答案 0 :(得分:2)
它们是不同选项的标志。每个标志只是一个数字,特别是2的幂。您使用按位运算符|
来翻转所需的所有标志位。一个例子可能会有所帮助:
>>> import re
>>> re.VERBOSE
64
>>> re.IGNORECASE
2
>>> re.VERBOSE | re.IGNORECASE
66
所以如果re
想知道IGNORECASE
标志是否设置,它可以检查第二位(2 ^ 1)是否等于1.如果是,我们应该忽略大小写。如果它想知道是否为VERBOSE
,它会检查第7位(对于2 ^ 6)。通过or
2和64一起,你有一个数字翻转了第二和第七位。
>>> 66 & 2
2
>>> 66 & 64
64
>>> 66 & 8
0
我们可以看到66触发2和64的标志,但不是8。
答案 1 :(得分:0)
注意按位OR 运算符与 boolean OR 运算符之间的区别:
|
是按位OR运算符,也就是说,OR运算是每位操作数的位:
>>> 1 | 2
3
这是因为1个二进制文件是001
,2个二进制文件是010
,所以它们的每位OR位是011
,即3。
or
是布尔运算符。
>>> 1 or 2
1
>>> 0 or 2
2
or
运算符返回第一个有效值(不是0
,None
,[]
或{}
)