您现在的位置是:课程教程文章
python什么是反序列化?
2023-12-18 17:42课程教程文章 人已围观
-
python从入门到实战|零基础入门|爬虫|数据
python从入门到实战|零基础入门|爬虫|数据PS:免费笔记和学习资料,请加婧琪老师微信:Python_jingqi 课程咨询加清风老师... -
人工智能python机器学习实战开发基础课
人工智能python机器学习实战开发基础课... -
03_Python逻辑控制_while for
03_Python逻辑控制_while for北京育华志远科技有限公司是国内综合性软件与信息服务企业,以领先的技术、... -
软件测试之Python自动化测试+Jmeter性能测试
软件测试之Python自动化测试+Jmeter性能测试以下是VIP课程的详情页...
python的序列化是把变量从内存中变成可存储或传输的过程,反序列化是把变量内容从序列化的对象重新读到内存的过程。方法是:1、导入pickle模块;2、利用pickle中的loads或load函数进行反序列化操作。
我们把变量从内存中变成可存储或传输的过程称之为序列化。
序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。
反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。
举例:大家应该都玩过魔兽争霸,应该知道该游戏有一个存档的功能,我每次不想玩得时候就可以存档,然后再玩得时候我们根本不需要重新开始玩,只需要读档就可以了。我们现在学习的事面向对象的思想,那么在我们眼中不管是我们的游戏角色还是游戏中的怪物、装备等等都可以看成是 一个个的对象,进行简单的分析。
角色对象(包含等级、性别、经验值、HP、MP等等属性)
武器对象(包含武器的类型、武器的伤害、武器附加的能力值等等属性)
怪物对象(包含等级、经验值、攻击、怪物类型等等)
于是玩游戏过程变的非常有意思了,创建游戏角色就好像是创建了一个角色对象,拿到武器就好像创建了一个武器对象,遇到的怪物、NPC等等都是对象了。
然后再用学 过的知识进行分析,我们发现对象的数据都是保存在内存中的,应该都知道内存的数据在断电以后是会消失的,但是我们的游戏经过存档以后,就算你关机了几天, 再进入游戏的时候,读取你的存档发现你在游戏中的一切都还在呢,奇怪了,明明内存中的数据已经没有了啊,这是为什么呢?于是再仔细考虑,电脑中有硬盘这个 东西在断电以后保存的数据是不会丢的(要是由于断电导致的硬盘损坏了,没有数据了,哈哈,不在此考虑中)。那么应该很容易的想到这些数据是被保存在硬盘中 了。没错!这就是对象的持久化,也就是我们今天要讲的对象的序列化。那么反序列化就很好理解了就是将存放在硬盘中的信息再读取出来形成对象。
pickle模块提供了四个功能:dumps、dump、loads、load。
dumps和dump都是进行序列化,而loads和load则是反序列化。
>>> import pickle >>> d=[1,2,3,4] >>> pickle.dumps(d) b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04e.'
dumps将所传入的变量的值序列化为一个bytes,然后,就可以将这个bytes写入磁盘或者进行传输。
而dump则更加一步到位,在dump中可以传入两个参数,一个为需要序列化的变量,另一个为需要写入的文件。
f=open('file_test','wb') >>> d=[1,2,3,4] >>> pickle.dump(d,f) >>> f.close() >>> f=opem('file_test','rb') f=open('file_test','rb') >>> f.read() b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04e.'
loads当我们要把对象从磁盘读到内存时,可以先把内容读到一个bytes,然后用loads方法反序列化出对象,也可以直接用load方法直接反序列化一个文件。
>>> d=[1,2,3,4] >>> r=pickle.dumps(d) >>> print(r) b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04e.' >>> pickle.loads(r) [1, 2, 3, 4]
>>> d=[1,2,3,4] >>> f=open('file_test','wb') >>> pickle.dump(d,f) >>> f.close() >>> f=open('file_test','rb') >>> r=pickle.load(f) >>> f.close() >>> print(r) [1, 2, 3, 4]
课程教程:python什么是反序列化?推荐课程:Matplotlib图形绘制(Corey Schafer)
上一篇:python清空命令行怎么写
下一篇:没有了