运算符“|=”与“+=”

Operator "|=" versus "+="

两者有什么区别吗?

如果不是,那么为什么在我们可以使用更知名的 += 时实施 |=?我觉得可能只是为了方便,陪&=,我觉得没有替代品。

当然有区别:

a = 1
a |= 1
print a

对比

a = 1
a += 1
print a

一个是加法,一个是按位或运算。对于其他类型,它们也可能以不同的方式重载。

为此你需要了解位运算: 例如:

a = 2
a |= 2

将导致 a = 2

这是因为 |(或)运算符是这样工作的:
2在二进制中表示为1010|10可以这样写:

10
10
___
10

您查看每一列,如果其中一行中有一个 1,那么在结果行中您也会有一个 1

当您计算 2|1 时,您可以获得与 2 + 1 类似的结果,因为 1 在二进制中是 01 并且操作转换为:

10
01
___
11

而二进制的 11 是十进制的 3