详解Python 序列化Serialize 和 反序列化Deserialize
详解Python 序列化Serialize 和 反序列化Deserialize
序列化 (serialization)
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,
它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
序列化和反序列化的目的
1、以某种存储形式使自定义对象持久化;
2、将对象从一个地方传递到另一个地方。
3、使程序更具维护性
序列化
由于存在于内存中的对象都是暂时的,无法长期驻存,为了把对象的状态保持下来,这时需要把对象写入到磁盘或者其他介质中,这个过程就叫做序列化。
反序列化
反序列化恰恰是序列化的反向操作,也就是说,把已存在在磁盘或者其他介质中的对象,反序列化(读取)到内存中,以便后续操作,而这个过程就叫做反序列化。
概括性来说序列化是指将对象实例的状态存储到存储媒体(磁盘或者其他介质)的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。
Python中可以使用 Pickle 和 json, 以及自定义序列化反序列化函数进行处理需要序列化的数据。
代码如下:
import pickle
import json
d = [1,2,3,4]
print(pickle.dumps(d))
print(type(pickle.dumps(d)))
print(json.dumps(d))
print(type(json.dumps(d)))
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持,如有疑问请留言或者到本站社区交流讨论,大家共同进步!
时间: 2017-08-18
前言 最近刚开始学习python,之前只有一些c的基础,也忘得差不多了,现在想边学习边总结和分享收获~看书时看了return的用法,可是后来和print混了,老是感觉可以将函数return值直接显示,但不是这样的.下面就来和大家分析下对python中return和print的理解,话不多说了,来一起看看详细的介绍吧. 看到知道上的一个例子: 代码 (1) x = 1 y = 2 def add (x, y): z = x + y return z print (add(x,y)) 代码 (2)
本文实例讲述了Python基于numpy灵活定义神经网络结构的方法.分享给大家供大家参考,具体如下: 用numpy可以灵活定义神经网络结构,还可以应用numpy强大的矩阵运算功能! 一.用法 1). 定义一个三层神经网络: '''示例一''' nn = NeuralNetworks([3,4,2]) # 定义神经网络 nn.fit(X,y) # 拟合 print(nn.predict(X)) #预测 说明: 输入层节点数目:3 隐藏层节点数目:4 输出层节点数目:2 2).定义一个五层神经网络:
前言 本文主要给大家介绍了关于利用python求相邻数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 什么是相邻数? 比如5,相邻数为4和6,和5相差1的数,连续相差为1的一组数 需求: 遍历inputList 所有数字,取出所有数字,判断是否有相邻数, 不相邻数字 和 相邻数字 都以 "数组"形式 添加到 outputList 中, 并且 每个"数组" 里 第一位 递减 补全两位数,末位 递增 补全两位数, 每一个数不能小于0, 不能大
本文实例讲述了Python爬取需要登录的网站实现方法.分享给大家供大家参考,具体如下: import requests from lxml import html # 创建 session 对象.这个对象会保存所有的登录会话请求. session_requests = requests.session() # 提取在登录时所使用的 csrf 标记 login_url = "https://bitbucket.org/account/signin/?next=/" result = se
本文实例讲述了Python多进程multiprocessing用法.分享给大家供大家参考,具体如下: mutilprocess简介 像线程一样管理进程,这个是mutilprocess的核心,他与threading很是相像,对多核CPU的利用率会比threading好的多. 简单的创建进程: import multiprocessing def worker(num): """thread worker function""" print 'Wor
本文实例讲述了Python iter()函数用法.分享给大家供大家参考,具体如下: python中的迭代器用起来非常灵巧,不仅可以迭代序列,也可以迭代表现出序列行为的对象,例如字典的键.一个文件的行,等等. 迭代器就是有一个next()方法的对象,而不是通过索引来计数.当使用一个循环机制需要下一个项时,调用迭代器的next()方法,迭代完后引发一个StopIteration异常. 但是迭代器只能向后移动.不能回到开始.再次迭代只能创建另一个新的迭代对象. 反序迭代工具:reversed()将返回
本文实例讲述了Python callable()函数用法.分享给大家供大家参考,具体如下: python中的内建函数callable( ) ,可以检查一个对象是否是可调用的 . 对于函数, 方法, lambda 函数式, 类, 以及实现了 _ _call_ _ 方法的类实例, 它都返回 True. >>> help(callable) Help on built-in function callable in module __builtin__: callable(...) calla
本文实例讲述了Python反射的用法.分享给大家供大家参考,具体如下: 在做程序开发中,我们常常会遇到这样的需求:需要执行对象里的某个方法,或需要调用对象中的某个变量,但是由于种种原因我们无法确定这个方法或变量是否存在,这是我们需要用一个特殊的方法或机制要访问和操作这个未知的方法或变量,这中机制就称之为反射.接下记录下反射几个重要方法: hasattr 判断对象中是否有这个方法或变量 class Person(object): def __init__(self,name): self.name
本文实例讲述了Python守护进程用法.分享给大家供大家参考.具体分析如下: 守护进程是可以一直运行而不阻塞主程序退出.要标志一个守护进程,可以将Process实例的daemon属性设置为True.代码如下: import os import time import random import sys from multiprocessing import Process,current_process def daemon(): p = current_process() print "sta
本文以实例形式分析了Python多进程编程技术,有助于进一步Python程序设计技巧.分享给大家供大家参考.具体分析如下: 一般来说,由于Python的线程有些限制,例如多线程不能充分利用多核CPU等问题,因此在Python中我们更倾向使用多进程.但在做不阻塞的异步UI等场景,我们也会使用多线程.本篇文章主要探讨Python多进程的问题. Python在2.6引入了多进程的机制,并提供了丰富的组件及api以方便编写并发应用.multiprocessing包的组件Process, Queue, P
本文实例讲述了python回调函数用法.分享给大家供大家参考.具体分析如下: 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用.回调和异步调用.同步调用是一种阻塞式调用,调用方要等待对方执行完毕 才返回,它是一种单向调用:回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口:异步调用是一种类似消息或事件的机制,不过它 的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口).回调和异步调用的关系非常紧密
本文实例讲述了python中assert用法.分享给大家供大家参考.具体分析如下: 1.assert语句用来声明某个条件是真的. 2.如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句. 3.当assert语句失败的时候,会引发一AssertionError. 测试程序: >>> mylist = ['item'] >>> assert len(mylist) >=
本文实例讲述了python动态参数用法.分享给大家供大家参考.具体分析如下: 先来看一段代码: class Person: def __init__(self,*pros,**attrs): self.name = "jeff" self.pros = pros for (key,value) in attrs.items(): stm = "self.%s = /"%s/""% (key,value) exec(stm) if __name__
本文实例讲述了python中global用法.分享给大家供大家参考.具体分析如下: 1.global---将变量定义为全局变量.可以通过定义为全局变量,实现在函数内部改变变量值. 2.一个global语句可以同时定义多个变量,如 global x, y, z 示例程序: >>> def func(): ... global x ... print 'x is ', x ... x = 2 ... print 'Change local x to ', x ... >>>