bin()是Python的一个内置函数,其作用是返回一个整数的二进制表示形式的字符串。该函数的参数可以是一个十进制的整数,也可以是其它进制的整数。返回的字符串以'0b'开始,表示这是一个二进制形式的字符串。其它非整数类型,如果其实现了__index__()函数,也可以使用该函数。
官方文档给出的bin()函数的语法形式如下所示:
bin(x)
x:是一个整数数值,可以是十进制的整数,也可以是其它进制的整数,但不可以是浮点数。该参数也可以是在类内部实现了__index__()函数的对象。
该函数的返回值是x的一个二进制形式的字符串,该字符串以'0b'开始。
#Python 3.8.2 [MSC v.1916 64 bit (AMD64)] on win32
>>>
>>> x = 10
>>> print(bin(x))
0b1010
>>> print(type(bin(x)))
<class 'str'>
>>>
从上面的例子中可以看出,bin()函数把整型数10转换成了二进制形式:0b1010,同时使用type(bin(x))可以看出,bin()函数返回的是一个字符串类型。
bin()函数的参数可以是负的整数,但不能是浮点数。看看下面的例子:
>>> x = -123
>>> print(bin(x))
-0b1111011
>>> x = 0
>>> print(bin(x))
0b0
>>> x = -0
>>> print(bin(x))
0b0
>>> x = 12.0
>>> print(bin(x))
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
print(bin(x))
TypeError: 'float' object cannot be interpreted as an integer
>>> x = 1.3
>>> print(bin(x))
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
print(bin(x))
TypeError: 'float' object cannot be interpreted as an integer
>>>
从上面的例子可以看出,当参数x是浮点数时,将引发TypeError错误。
参数x也可以是其它进制的整型数。
下面的例子演示了二进制、十六进制和八进制的情况。
>>> x = 0b1001
>>> print(bin(x))
0b1001
>>> x = 0X1F
>>> print(bin(x))
0b11111
>>> x = 0o17
>>> print(bin(x))
0b1111
>>>
如果类中实现了__index__()函数,则bin()函数的参数x也可以是用户自定义的对象。
下面例子演示了在类内部实现__index__()函数以及未实现__index__()函数的情形。
class Student:
id = 0
def __init__(self,id):
self.id = id
def __index__(self):
return self.id
class Teacher:
id = 0
def __init__(self,id):
self.id = id
stu = Student(10)
print(bin(stu))
tea = Teacher(11)
print(bin(tea))
输出结果如下:
0b1010
Traceback (most recent call last):
File "D:/PY/bin.py", line 19, in <module>
print(bin(tea))
TypeError: 'Teacher' object cannot be interpreted as an integer
从输出结果可知,Student中实现了__index__()函数,使用其对象stu作为bin()函数的参数时可以正确执行,没有产生问题,而Teacher内未实现__index__()函数,则引发了TypeError异常。
以上是关于Python bin()函数的介绍,如有问题欢迎留言评论。
新闻热点
疑难解答