__invert__方法的目的是什么?我在探索Python内部元素时发现:
>>> dir(__builtins__.int)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']令我惊讶的是:
__builtins__.int().__invert__()这似乎打破了所有的数学规则,因为__builtins__.int()返回零,我们都知道你不能把这个整数反转。也许我错过了什么..。因此,我深入研究了文档,发现__invert__等价于按位计算。
发布于 2019-09-20 15:54:27
__invert__是“二进制而非”运算符~的实现--它与数学中“反向”一词的任何正式定义完全无关。
对于整数0,使用2s补码,0b000...000的二进制否定是0b111...111 -或十进制中的-1。
>>> ~int()
-1
>>> int().__invert__()
-1
>>> ~0
-1https://stackoverflow.com/questions/54784932
复制相似问题