根据PEP 358,字节对象用于存储可变字节序列(0-255),如果不是这种情况则引发.
但是,我的python 2.7说不然
>>> bytes([1,2,3])
'[1, 2, 3]'
>>> bytes([280])
'[280]'
>>> bytes is str
True
>>> bytes
<type 'str'>
Run Code Online (Sandbox Code Playgroud)
有没有人知道PEP被宣布为最终的原因,但实施不符合?
nos*_*klo 48
新bytes 类型是唯一3.X.2.x bytes内置只是该str类型的别名.bytes2.x中没有新的类型; 只是一个新的别名和文字语法str.
这是每个人都喜欢的文档片段:
Python 2.6
bytes作为str类型的同义词添加,它也支持b''表示法.2.6
str以各种方式与3.0的字节类型不同; 最值得注意的是,构造函数完全不同.在3.0中,bytes([65, 66, 67])是3个元素长,包含表示的字节ABC; 在2.6中,bytes([65, 66, 67])返回表示str()列表的12字节字符串.
bytes2.6中的主要用途是编写对象类型的测试,如isinstance(x, bytes).这将有助于2to3转换器,它无法判断2.x代码是否意图字符串包含字符或8位字节; 您现在可以使用bytes或str完全表示您的意图,并且在Python 3.0中生成的代码也是正确的.
Sco*_*ths 39
该bytes类型是在Python 3中引入的,但是在PEP中讨论的是一个可变序列(bytes不可变),它在Python 2.6中以名称引入bytearray.
PEP显然没有按照规定实施(它确实说它被PEP 3137部分取代)但我认为这只是一个重新命名的问题,而不是缺失的功能.在Python 2中,bytes它只是一个str帮助向前兼容的别名,因此这里有一个红色的鲱鱼.
示例bytearray用法:
>>> a = bytearray([1,2,3])
>>> a[0] = 5
>>> a
bytearray(b'\x05\x02\x03')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48462 次 |
| 最近记录: |