位运算-魔法方法
>>> # 位运算: << >>> & ^ | ~ 二进制按位运算>>> # bin()函数将数字转换位二进制,0b开头
>>> print()
['0b0', '0b1', '0b10', '0b11', '0b100', '0b101', '0b110', '0b111', '0b1000', '0b1001']
>>> # 按位与
>>> print(3 & 4)
0
>>> # 按位或
>>> print(3 | 2)
3
>>> # 按位非,涉及补码
>>> print(~2)
-3
>>> # 按异或
>>> print(3 ^ 2)
1
>>> # 右移,移动位数不能是负数
>>> print(8 >> 2)
2
>>> # 左移,移动位数不能是负数
>>> print(8 << 2)
32
>>> # math 数学函数
>>> import math
>>> print(0.1 + 0.2) == 0.3 + math.ulp(0.3)
0.30000000000000004
False
>>> # __index__(self)用法:让对象作为索引值被访问才会触发
>>> class C:
... def __index__(self):
... print("被拦截了~~")
... return 3
...
>>> c = C()
>>> try:
... print(c)
... except TypeError as e:
... print(e)
... # 'C' object is not subscriptable
...
'C' object is not subscriptable
>>> s = 'fishc'
>>> print(s)
被拦截了~~
h
>>> print(s)
被拦截了~~
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string indices must be integers
>>>
页:
[1]