为什么要序列化?
内存中的字典、列表、集合以及各种对象如何保存在一个文件中?
如果是自己定义的类的实例如何保存在一个文件中?
如何从文件中读取数据,并让他们在内存中再次恢复成自己对应的类的实例?
要设计一套协议,按照某种规则,把内存中数据保存到文件中。文件是一个字节序列,所以必须把数据转换成字节序列输出到文件,这就是序列化。反之,从文件的字节序列恢复到内存并还原的类型就是反序列化。
定义
Serialization序列化
将内存中的对象存储下来,把它变成一个个字节。->二进制
Deserialization反序列化
将文件中的一个个字节恢复成内存中对象。<-二进制
序列化保存到文件就是持久化。
可以将数据序列化之后持久化,或者网络传输;也可以将文件中或者网络中或者网络接收到的字节序列反序列化。
Python提供了pickle库。
Pickle库
Python中的序列化、反序列化模块
序列化应用
一般来说,本地序列化的情况应用较少,大多数应用场景在网络传输中。
将数据序列化后通过网络传输到远程节点,远程服务器上的服务将接收到的数据反序列化就可以了。
但是要注意一点,远程接收端反序列时必须有对应的数据类型,否则会报错。尤其是自定义类,必须远程得有一致的定义。