Python 有常见的按位运算符,如 ~
、&
、|
等,以及就地运算符如 + =
、&=
等来简化表达式,例如:
a = a & 34234
a = a + 577
致:
a &= 34234
a += 577
尽管补码运算符 ~
是一元函数,并且不遵循相同的结构,因为它不与两个值一起使用(例如 a
和 34234
),这样的表达式可以用另一种类型的运算符来简化吗?
a = ~a # not bad at all
# Still easy to code but seems redundant
self.container.longVariableName.longName = ~self.container.longVariableName.longName
最佳答案
这非常晦涩难懂,但是:
self.container.longVariableName.longName ^= -1
只要您处理的值是整数,就可以完成这项工作。需要“是整数”,以便在 ~
和 ^
运算符之间存在可利用的数学关系。
为什么它有效:
- 按位补码与对无限 1 位字符串进行异或运算相同。
- Python 保留了整数使用无限宽度的 2 补码表示的错觉,因此 -1"is"1 位的无限字符串。
关于Python 就地补码运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20916404/