首页 > 开发 > Python > 正文

Python bin()函数

2023-04-24 19:21:36
字体:
来源:转载
供稿:网友

bin()是Python的一个内置函数,其作用是返回一个整数的二进制表示形式的字符串。该函数的参数可以是一个十进制的整数,也可以是其它进制的整数。返回的字符串以'0b'开始,表示这是一个二进制形式的字符串。其它非整数类型,如果其实现了__index__()函数,也可以使用该函数。

bin()函数的语法格式

官方文档给出的bin()函数的语法形式如下所示:

bin(x)

参数

x:是一个整数数值,可以是十进制的整数,也可以是其它进制的整数,但不可以是浮点数。该参数也可以是在类内部实现了__index__()函数的对象。

返回值

该函数的返回值是x的一个二进制形式的字符串,该字符串以'0b'开始。

python bin()函数

bin()函数使用示例

#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()函数的介绍,如有问题欢迎留言评论。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表