Python中的脱字符(^)是做什么的?
我今天跑过Python中的插入符号运算符,并尝试出来,我得到了以下输出:
>>> 8^3 11 >>> 8^4 12 >>> 8^1 9 >>> 8^0 8 >>> 7^1 6 >>> 7^2 5 >>> 7^7 0 >>> 7^8 15 >>> 9^1 8 >>> 16^1 17 >>> 15^1 14 >>>
它似乎是基于8,所以我猜测某种字节操作? 我似乎无法find很多关于这个search网站,除了它的行为奇怪的浮动,是否有人链接到这个操作员做什么,或者你可以在这里解释吗?
这是一个按位异或 (异或)。
如果一个 (且只有一个)操作数(计算结果为)为true,则结果为true。
展示:
>>> 0^0 0 >>> 1^1 0 >>> 1^0 1 >>> 0^1 1
解释一个你自己的例子:
>>> 8^3 11
这样想一想:
1000#8(二进制) 0011#3(二进制) ----#应用异或('垂直') 1011#结果= 11(二进制)
它根据需要调用对象的__xor__()
或__rxor__()
方法,这对于整数types来说是按位异或的。
这是一个一点点的排他性或。 二进制位运算符在Python语言参考的第五章中有记载。
一般来说,符号^
是__xor__
或__rxor__
方法的中缀版本。 无论数据types放置在符号的左侧还是右侧,都必须以兼容的方式实现此function。 对于整数,这是常见的XOR
操作,但是例如,对于types为int
float
型函数没有内置的定义:
In [12]: 3 ^ 4 Out[12]: 7 In [13]: 3.3 ^ 4 --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-13-858cc886783d> in <module>() ----> 1 3.3 ^ 4 TypeError: unsupported operand type(s) for ^: 'float' and 'int'
关于Python的一个很好的事情是,你可以在你自己的类中覆盖这个行为。 例如,在某些语言中, ^
符号表示取幂。 你可以这样做,就像一个例子:
class Foo(float): def __xor__(self, other): return self ** other
那么像这样的东西将会起作用,而现在, 对于Foo
, ^
符号将意味着取幂。
In [16]: x = Foo(3) In [17]: x Out[17]: 3.0 In [18]: x ^ 4 Out[18]: 81.0