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()函數的介紹,如有問題歡迎留言評論。
新聞熱點
疑難解答