pickle
一:字节流
1:什么是流:
参考1:什么是字节流?-慕课网 (imooc.com)
字节流是由字节组成的,流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以使文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。祝学习愉快!
参考2:吃透Java IO:字节流、字符流、缓冲流 - 知乎 (zhihu.com)
流(
Stream
),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道。当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。
参考3: 流(字节流) - nb小歪 - 博客园 (cnblogs.com)
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作
自己理解:流:是从一个地方传输到另外一个地方的,有明确传输方向的一连串数据。
2:字节流
简单的说,就是数据流中数据的格式是以字节的形式给出,字节流是由字节组成的;
二:序列化
参考1:(20条消息) 为什么要序列化?序列化你知道哪些?_wangyuan9826的博客-CSDN博客
序列化:把对象转化为可传输的字节序列过程
序列化:把对象转化为可传输的字节序列过程
序列化最终的目的是为了对象可以跨平台存储和进行网络传输,而我们进行跨平台存储和网络传输的方式就是 IO,而 IO 支持的数据格式就是字节数组。
参考2:(20条消息) Python基础(13)——pickle模块的详述(dumps、loads、dump、load的用法)_pickle.dumps_浅浅爱默默的博客-CSDN博客
在程序运行的过程中,所有的变量都是在内存中,比如,定义一个 dict:
a = {'name':'Bob','age':20,'score':90}
字典 a 可以随时修改变量,比如把 name 改成 'Bill',但是一旦程序结束,变量所占用的内存就被操作系统全部回收。如果没有把修改后的 'Bill'存储到磁盘上,下次重新运行程序,变量又被初始化为 'Bob'。我们把变量从内存中变成可存储或传输的过程称之为序列化,在 Python 中叫 pickling。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即 unpickling。
pickle 序列化后的数据,可读性差,人一般无法识别;
pickle 模块只能在 python 中使用,且只支持同版本,不能跨平台使用;
Python 中所有的数据类型(列表,字典,集合,类等)都可以用 pickle 来序列化。
需导入 pickle 模块 — import pickle
自己理解:内存中的内容要先经过序列化才可以进行传输或者存储!!!
注意:序列化只是把数据转化为了可以传输的数据格式,一般是字节形式,但还没有进行实际传输!
三:pickle
参考自:(20条消息) 【pickle】详解python中的pickle模块(常用函数、示例)_python pickle模块_程序遇上智能星空的博客-CSDN博客
python中的pickle模块实现了基本的数据序列化和反序列化。