网站名称与主办单位山东网站建设运营
web/
2025/9/30 1:57:07/
文章来源:
网站名称与主办单位,山东网站建设运营,wordpress free theme,域名购买备案当我们在内存中定义一个dict的时候#xff0c;我们是可以随时修改变量的内容的#xff1a; ddict(namewc,age28)d{name: wc, age: 28}我们可以随时修改name和age的值。但是当我们重新运行程序的时候#xff0c;name、age的初始化值还是wc和28#…当我们在内存中定义一个dict的时候我们是可以随时修改变量的内容的 ddict(namewc,age28)d{name: wc, age: 28}我们可以随时修改name和age的值。但是当我们重新运行程序的时候name、age的初始化值还是wc和28实际情况下我们需要保存该dict的最后的值。我们把变量从内存中变成可存储或传输的过程称之为序列化。python中称之为picklingJava中叫serialization都是一个意思。序列化之后我们就可以把内容写入到磁盘或者通过网络传输出去。反之把变量从序列化的对象重新读取到内存中称之为反序列化洋名叫unpickling。python中实现序列化的模块叫pickle。pickle.dumps()方法可以把任意的对象序列化成一个Bytes然后就可以把这个bytes写入文件。pickle.dump()方法可以直接把对象序列化写入一个file-like的对象中。相反的pickle.loads()方法可以把文件中的内容读入到一个bytes然后把这个bytes对象转换为目标类型对象也可以使用pickle.load()方法直接从一个file-like对象中直接反序列化出对象 f open(E:\\python3.6.3\\workspace\\dump.txt,wb)pickle.dump(d,f)f.close() fopen(E:\\python3.6.3\\workspace\\dump.txt,rb) c pickle.load(f)c{name: wc, age: 28}JSON实际开发中我们或多或少都会碰到跨语言传输数据的问题这就要求我们要把对象序列化为标准格式比如JSON和XML。JSON的表现形式就是一个字符串可以被所有的语言读取。可以方便的存储到磁盘或者通过网络传输。JSON表示的对象是标准的JavaScript的对象其和python内置的数据类型的对应关系如下JSON类型Python类型{}dict[]liststr123.4int 或 floattrue/falseTrue/FalsenullNonepython内置了json模块可以方便的在python对象和json对象之间转换 importjson ddict(namewc,age28)json.dumps(d){name: wc, age: 28} c json.dumps(d) djson .loads(c)d{name: wc, age: 28}python内置的数据类型可以直接转换为json类型但是class对象并不刻意直接转为json这是因为class对象默认的并不具有可序列化的属性。2种方法第一种是通过dumps()方法的default参数把任意一个对象转换为一个可序列化的对象。下面的例子中先定义一个Student的class然后定义一个student2dict()函数该函数的作用就是把Student的属性转换为dict最后再序列化为json importjson classStudent(object):...def __init__(self,name,age):... self.namename... self.ageage... defstudent2dict(s):...return {name:s.name,age:s.age}... sStudent(wc,28) print(json.dumps(s,defaultstudent2dict)){name: wc, age: 28}第二种方法借用class对象的__dict__属性 classTeacher(object):...def __init__(self,name,age):... self.namename... self.ageage... t Teacher(ly,90) print(json.dumps(t,defaultlambda obj:obj.__dict__)){name: ly, age: 90}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84193.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!