在Pythonstring之前的前缀是什么?
在一个python源代码中,我偶然发现了一个string之前的小b :
b"abcdef"  我知道u前缀表示一个unicodestring, r前缀为一个原始string文字。 
  b什么样的源代码是有用的,因为它似乎完全像一个没有任何前缀的纯string? 
 这是Python3 bytes 文字 。 这个前缀在Python2.5和更旧的版本中是不存在的(它相当于一个普通的2.xstring,而3.x的普通string相当于在2.x中带有u前缀的文字)。 在Python 2.6+中,它相当于一个纯string, 与3.x兼容 。 
  b前缀表示bytesstring文字 。 
 如果您看到它在Python 3源代码中使用,则expression式会创build一个bytes对象 ,而不是一个常规的Unicode str对象 。 如果您看到它在您的Python shell中回显或作为列表,dict或其他容器内容的一部分,那么您会看到使用此表示法表示的bytes对象。 
  bytes对象基本上包含0-255范围内的整数序列,但是在表示时,Python将这些字节显示为ASCII代码点,以便更容易地阅读其内容。  ASCII字符可打印范围以外的任何字节都显示为转义序列(例如\n , \x82等)。 
  bytes模型二进制数据 ,包括编码文本 。 如果您的bytes值包含文本,则需要先使用正确的编解码器对其进行解码。 例如,如果数据编码为UTF-8,则可以通过以下方式获取Unicode str值: 
 strvalue = bytesvalue.decode('utf-8') 
  Python 2版本2.6和2.7还支持使用b'..'string文字语法创buildstring文字,以便轻松开发可在Python 2和Python 3上工作的代码。