我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,反之,将序列化的内容重新读取到内存称作反序列化,Python中叫做unpickling。
以上是廖大说的。
再说说我的看法。这里我们先约定内存中的变量的本质是信息。对于Pyhon,在内存中,操作信息需要以Python的某种数据类型(比如说列表,字典)的形式存在。而我们要把信息保存到磁盘中,显然我们不能再让信息以上述提到的Python数据类型的形式存在了,我们可能要将信息变成字节的形式。好,上述这个“变”的过程,我们就称之为序列化,那么其逆过程显然就被称作反序列化。具体的实现方式由Python的pickle模块给出,这里不赘述。
通过(反)序列化能够让信息以我们想要形式存在了(其实也是非这样做不可,因为内存只认识变量,而磁盘又只认识字节),但是注意,我们前面是采用Python语言来操作信息的,我们考虑的是Python数据类型与字节类型之间的转换(也就一意味信息只以这两种形式存在),但是如果我们要用Java来操作信息呢?自然,Java也应该有它特有的序列化实现方式(比如是Java数据类型和字节类型之间的转换)。还没完, 要是Python程序员要把信息传给Java程序员,这该如何实现?(更准确的提问是:Python数据类型如何转化为Java数据类型?),Json就是解决这个问题的方法!它提供了一种过渡类型,让Python程序员和Java程序员之间也能交换信息。