根据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
类型的别名.bytes
2.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字节字符串.
bytes
2.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 次 |
最近记录: |