day16 序列化

概念
    序列化是指将某种数据类型做一种特殊的字符串形式处理,方便数据类型的存取以及传输。
 
意义
    在程序中,如果需要用到一些数据存放个人信息,比如用户名和密码字典类型,那么会在多种场景下需要用到这个数据。如果将该数据用作全局变量,一方面不安全,另一方面也很不方便,让所有的程序都来调用这个变量不现实。所以需要一个文件专门用来存储该数据类型。但是由于一般情况下从文件中读取出来的都是字符串数据类型,已经不再是原来的字典类型了,导致数据不可用。这个时候就需要用到序列化,通过序列化,可以对数据类型作特殊的序列化处理,存储在文件中,需要用到该数据类型时,通过反序列化就可以还原原有的数据类型。总而言之,一方面为了数据类型的存储,另一反面,为了方便数据的传输。
 
如何实现序列化
    json模块:对多种编程语言通用,只有部分数据类型能序列化。(dict list tuple str int float false true None)
        用于数据的存取:dump load
       import json
    f=open('testseq',encoding='utf-8',mode='w')
    dict1={'张三':16,'王五':18}
    json.dump(dict1,f)
    f.close()
    s=open('testseq',encoding='utf-8')
    k=json.load(s)
    print(k,type(k))    //{'张三': 16, '王五': 18} <class 'dict'>
    s.close()
 
    用于数据的传输:dumps loads
      dict2={'张三':16,'王五':18}
    str_dict2=json.dumps(dict2,ensure_ascii=False)
    print(str_dict2,type(str_dict2))    //{"张三": 16, "王五": 18} <class 'str'>
    ret=json.loads(str_dict2)
    print(ret,type(ret))      //  {'张三': 16, '王五': 18} <class 'dict'>
 
  pickle模块:只在python中使用,所有数据类型都可以序列化。具体用法和json模块一样
原文地址:https://www.cnblogs.com/spacetime-party/p/13062736.html