于 2020 年 1 月 7 日更新
bin()函数以字符串形式返回整数的二进制表示形式。
其语法如下:
bin(number) -> binary representation
| 参数 | 描述 |
|---|---|
number |
任何数值 |
这是一个例子:
>>>>>> bin(4) # convert decimal to binary'0b100'>>>>>>>>> bin(0xff) # convert hexadecimal to binary, 0xff is same decimal 255'0b11111111'>>>>>>>>> bin(0o24) # convert octacl to binary, 0o24 is same decimal 20'0b10100'>>>
print(bin(4))print(bin(0xff))print(bin(0o24))
bin()与用户定义的对象
要将bin()与用户定义的对象一起使用,我们必须首先重载__index__()方法。 在切片和索引的上下文中,__index__()方法用于将对象强制为整数。 例如,考虑以下内容:
>>>>>> l = [1, 2, 3, 4, 5]>>>>>> x, y = 1, 3>>>>>>>>> l[x]2>>>>>>>>> l[y]4>>>>>>>>> l[x:y][2, 3]>>>
l = [1, 2, 3, 4, 5]x, y = 1, 3print(l[x])print(l[y])print(l[x:y])
当我们使用索引和切片访问列表中的项目时,内部 Python 会调用int对象的__index__()方法。
>>>>>> l[x.__index__()] # same as l[x]2>>>>>>>>> l[y.__index__()] # same as l[y]4>>>>>>>>> l[x.__index__():y.__index__()] # # same as l[x:y][2, 3]>>>
l = [1, 2, 3, 4, 5]x, y = 1, 3print(l[x.__index__()])print(l[y.__index__()])print(l[x.__index__():y.__index__()])
除了bin()之外,在对象上调用hex()和oct()时也会调用__index__()方法。 这是一个例子:
>>>>>> class Num:... def __index__(self):... return 4...>>>>>> l = [1, 2, 3, 4, 5]>>>>>>>>> n1 = Num()>>>>>>>>> bin(n1)0b100>>>>>>>>> hex(n1)0x4>>>>>>>>> oct(n1)0o4>>>>>>>>> l[n1]5>>>>>>>>> l[n1.__index__()]5>>>
class Num:def __index__(self):return 4l = [1, 2, 3, 4, 5]n1 = Num()print(bin(n1))print(hex(n1))print(oct(n1))print(l[n1])print(l[n1.__index__()])
