Python编程环境搭建
3 变量类型和运算符
3.1 Python变量的定义和使用
3.2 Python整数类型(int)
3.3 Python小数/浮点数(float)
3.4 Python复数类型(complex)
3.5 为什么Python浮点类型存在误差?
3.6 Python字符串
3.7 Python字符串使用哪种编码格式?
3.8 Python bytes
3.9 Python bool布尔类型
3.10 Python初始化变量,并不一定开辟新的内存!
3.11 Python input()函数:获取用户输入的字符串
3.12 Python print()函数高级用法
3.13 Python格式化字符串
3.14 Python转义字符
3.15 Python数据类型转换
3.16 Python算术运算符
3.17 Python赋值运算符
3.18 Python位运算符
3.19 Python比较运算符
3.20 Python逻辑运算符
3.21 Python三目运算符
3.22 Python运算符优先级和结合性
列表、元组、字典和集合 Python字符串常用方法 Python流程控制 函数和lambda表达式 Python类和对象 类特殊成员(属性和方法) Python异常处理机制 Python模块和包 Python文件操作(I/O)
Python bytes 类型用来表示一个字节串。“字节串“不是编程术语,是我自己“捏造”的一个词,用来和字符串相呼应。 bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的。

字节串(bytes)和字符串(string)的对比: 字符串由若干个字符组成,以字符为单位进行操作;字节串由若干个字节组成,以字节为单位进行操作。 字节串和字符串除了操作的数据单元不同之外,它们支持的所有方法都基本相同。 字节串和字符串都是不可变序列,不能随意增加和删除数据。 bytes 只负责以字节序列的形式(二进制形式)来存储数据,至于这些数据到底表示什么内容(字符串、数字、图片、音频等),完全由程序的解析方式决定。如果采用合适的字符编码方式(字符集),字节串可以恢复成字符串;反之亦然,字符串也可以转换成字节串。
说白了,bytes 只是简单地记录内存中的原始数据,至于如何使用这些数据,bytes 并不在意,你想怎么使用就怎么使用,bytes 并不约束你的行为。
bytes 类型的数据非常适合在互联网上传输,可以用于网络通信编程;bytes 也可以用来存储图片、音频、视频等二进制格式的文件。
字符串和 bytes 存在着千丝万缕的联系,我们可以通过字符串来创建 bytes 对象,或者说将字符串转换成 bytes 对象。有以下三种方法可以达到这个目的:
如果字符串的内容都是 ASCII 字符,那么直接在字符串前面添加 b 前缀就可以转换成 bytes。 bytes 是一个类,调用它的构造方法,也就是 bytes(),可以将字符串按照指定的字符集转换成 bytes;如果不指定字符集,那么默认采用 UTF-8。 字符串本身有一个 encode() 方法,该方法专门用来将字符串按照指定的字符集转换成对应的字节串;如果不指定字符集,那么默认采用 UTF-8。 【实例】使用不同方式创建 bytes 对象: #通过构造函数创建空 bytes b1 = bytes() #通过空字符串创建空 bytes b2 = b'' #通过b前缀将字符串转换成 bytes b3 = b'http://c.biancheng.net/python/' print("b3: ", b3) print(b3[3]) print(b3[7:22]) #为 bytes() 方法指定字符集 b4 = bytes('C语言中文网8岁了', encoding='UTF-8') print("b4: ", b4) #通过 encode() 方法将字符串转换成 bytes b5 = "C语言中文网8岁了".encode('UTF-8') print("b5: ", b5) 运行结果: b3:  b'http://c.biancheng.net/python/'
b'c.biancheng.net'
b4:  b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x918\xe5\xb2\x81\xe4\xba\x86'
b5:  b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x918\xe5\xb2\x81\xe4\xba\x86'

从运行结果可以发现,对于非 ASCII 字符,print 输出的是它的字符编码值(十六进制形式),而不是字符本身。非 ASCII 字符一般占用两个字节以上的内存,而 bytes 是按照单个字节来处理数据的,所以不能一次处理多个字节。
如果你对进制不了解,请猛击: 进制详解:二进制、八进制和十六进制 进制转换:二进制、八进制、十六进制、十进制之间的转换 如果你对字符集(字符编码)不了解,请猛击: ASCII编码,将英文存储到计算机 GB2312编码和GBK编码,将中文存储到计算机 Unicode字符集,将全世界的文字存储到计算机 bytes 类也有一个 decode() 方法,通过该方法可以将 bytes 对象转换为字符串。紧接上面的程序,添加以下代码: #通过 decode() 方法将 bytes 转换成字符串 str1 = b5.decode('UTF-8') print("str1: ", str1) 输出结果: str1:  C语言中文网8岁了

关注公众号「 站长严长生 」,在手机上阅读所有教程,随时随地都能学习。本公众号由 C语言中文网站长 亲自运营,长期更新,坚持原创。

微信扫码关注公众号