1

以下配方所示,使用了|=运算符。我以前从未见过它,也没有记录。这是什么意思?

4

4 回答 4

7

这是一个就地的|. a |= b主要相当于. _a = a | b

于 2012-04-26T07:58:12.953 回答
4

|=是所谓的扩充赋值语句。它的目的是做一个就地或操作,就像正常|操作一样。

然而,存在一些细微的差异,因为对象的不同方法被调用:for |, it is__or__()__ror__(), for |=, it is __ior__()

于 2012-04-26T08:10:49.190 回答
3

在您询问的特定食谱中:

startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW

dwFlags是一个位掩码,也就是说,它通过打开整数中的适当位来将多个标志存储在单个整数值中。在这种情况下,STARTF_USESHOWWINDOW的值为1,这意味着如果dwFlags整数中的最低有效位为 ,则设置此标志1,如果 LSB 为 ,则不设置此标志0

在这种情况下,|=运算符所做的是获取左操作数并对其进行更改,以便将1左操作数中的位设置在其中,而其余位则保持不变。

例如,如果它设置了一些标志,使其之前的二进制表示是 ,例如,00101000它将被设置为00101001,添加subprocess.STARTF_USESHOWWINDOW到设置的标志而不影响在操作之前设置的其他标志。

于 2012-04-26T11:54:11.860 回答
1

a |= b 意思相同a = a | b

于 2012-04-26T07:58:35.500 回答