布尔 Python 使用方法 python-1.8 中的 bool 函数使用方法 函数字节数
在Python程序中,函数bytes()的功能是返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列。函数bytes()的语法格式如下所示:
class bytes([source[, encoding[, errors]]])
- 如果 source 为整数,则返回一个长度为 source 的初始化数组;
- 如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
- 如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
- 如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray;
- 如果没有输入任何参数,默认就是初始化数组为0个元素。
函数bytes()的返回值为一个新的不可修改字节数组,每个数字元素都必须在0 - 255范围内。函数bytes()和函数bytearray()的具有相同的功能,差别仅仅是返回的字节数组不可修改。例如在下面的实例文件byts.py中,演示了使用函数bytes()处理不同类型数据的过程。
b = bytes()
print(b)
①print(len(b))
②print(bytes('中文','utf-8'))
③print('中文'.encode('utf-8'))
④print(bytes(2))
⑤print(bytes([1,2,3]))
⑥b = bytes(10)
print(b)
print(b[0])
b = bytearray(10)
print(b)
b[1] = 1 #可修改
⑦print(b)
执行后会输出:
b''
0
b'\xe4\xb8\xad\xe6\x96\x87'
b'\xe4\xb8\xad\xe6\x96\x87'
b'\x00\x00'
b'\x01\x02\x03'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0
bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
bytearray(b'\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00')
①当3个参数都不传的时候,返回长度为0的字节数组。
②③当参数source为字符串时,参数encoding也必须提供,函数bytes()使用str.encode()方法将字符串转换成字节数组。如果不设置编码,则执行后会出错,例如下面的代码:
>>> bytes('中文') #需传入编码格式
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
bytes('中文')
TypeError: string argument without an encoding
④当参数source为整数时,会返回这个整数所指定长度的空字节数组。这里的数组长度必须是大于零,否则执行后会出错,例如下面的演示代码:
>>> bytes(-2) #整数需大于0,用于做数组长度
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
bytes(-2)
ValueError: negative count
⑤当参数source是一个可迭代对象时,那么这个迭代对象的元素都必须符合0 <= x < 256,以便可以初始化到数组中。如果不符合0 <= x < 256这一条件,则执行后会出错,例如下面的演示代码:
>>> bytes([256,2,3])
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
bytes([256,2,3])
ValueError: bytes must be in range(0, 256)
⑥⑦演示函数bytes()返回数组不可修改的用法,而函数bytearray()则可以修改数组元素值,例如使用代码“b[1] = 1”将其值修改为1。如果在函数bytes()中修改数组元素值,则执行后会出错,例如下面的代码:
>>> b = bytes(10)
>>> b
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>> b[0]
0
>>> b[1] = 1 #不可修改
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
b[1] = 1
TypeError: 'bytes' object does not support item assignment
上一篇: 数字电路 | 逻辑运算符 | 布尔函数 | 组合系统
下一篇: PL/SQL 如何输出布尔值