Bytes类型是Python 3引入的一个基本数据类型。调用Bytes类型的 .decode()
方法可以把它变成Python 3的 str类型
。调用 str类型
的 .encode()
方法,可以把它变成Bytes类型。
如果字符串只由Ascii中的符号组成,那么它转换为Bytes类型以后打印出来,“看上去”仅仅是前面多了一个 b
而已,如下图所示:
但是如果字符串里面包含Ascii符号之外的其他符号,那么转换为Bytes类型以后,就变得不一样了,如下图所示:
其中在Ascii符号以外的字符,会被编码为很多的十六进制值。
并且,即使是仅有Ascii字符,Bytes型数据的迭代特性也与字符串不一样。
这些编码实际上可以直接使用 chr
转换为对应的字符,如下图所示:
在Python 3里面,不少操作获取的都是Bytes型的数据,例如base64.b64decode()的输出结果、例如redis-py这个库从Redis中读取的数据……
所以在实际使用中,一定要分清楚当前数据是不是Bytes型,以免因为它的迭代行为与字符串不一致导致问题。
最后,不要因为Bytes型数据在迭代的时候不方便就讨厌它。这个数据类型有非常重要的作用。