如following recipe所示,使用了|=
运算符。我以前从未见过它,也没有记录。这是什么意思?
答案 0 :(得分:7)
这是就地|
。 a |= b
大部分等同于a = a | b
。
答案 1 :(得分:4)
|=
是所谓的augmented assignment statement。它的目的是进行就地或操作,就像the normal |
operation一样。
然而,有一些次级差异,因为对象的不同方法被调用:对于|
,对于|=
,它是__or__()
或__ror__()
,它是__ior__()
。
答案 2 :(得分:3)
在您要询问的特定食谱中:
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
dwFlags
是一个位掩码,也就是说,它通过打开整数中的相应位将一些标志存储在一个整数值中。在这种情况下,STARTF_USESHOWWINDOW
的值为1
,这意味着如果dwFlags
整数中的最低有效位为1
,则设置此标志,并且未设置如果LSB是0
。
在这种情况下|=
运算符的作用是取左操作数并更改它,以便在左操作数中设置1
位,其余位保持不变。
例如,如果它设置了一些标志,使得它之前的二进制表示是00101000
,则它将被设置为00101001
,并将subprocess.STARTF_USESHOWWINDOW
添加到标志中设置时不会影响操作前设置的其他标志。
答案 3 :(得分:1)
a |= b
表示与a = a | b
相同。