• python基础复习 12


      1 # 什么是序列化:数据类型转化成字符串的过程就是序列化
      2 # 作用:为了方便存储和传输
      3 
      4 # json   可以操作的数据类型(数字、字符串、列表、字典、元祖)
      5    # 通用的序列化格式
      6    # 只有很少的一部分数据类型能够通过json转化成字符串
      7        # dumps  序列化
      8        # loads    反序列化
      9        # dump  和文件有关
     10        # load   load 不能load多次
     11 
     12 # pickle
     13     # 所有的python中的数据类型都可以转化成字符串形式
     14     # pickle序列化的内容只有python能理解
     15     # 且部分反序列化依赖代码
     16         # 方法和json一样
     17         # dump 和 load的时候 文件是rb或者wb打开的
     18         # 支持python所有的数据类型
     19         # 序列化和反序列化需要相同的环境
     20 
     21 # shelve
     22     # 序列化句柄
     23     # 使用句柄直接操作,非常方便
     24         # open方法
     25         # open方法获取了一个文件句柄
     26         # 操作和字典类似
     27 
     28 
     29 
     30 # json 提供dumps序列化方法    loads 反序列化方法
     31 # dic = {"k1": "v1"}
     32 # print(type(dic),dic)
     33 # import json
     34 # str_d = json.dumps(dic)
     35 # print(type(str_d),str_d)
     36 #
     37 # dic_d = json.loads(str_d)
     38 # print(type(dic_d),dic_d)
     39 
     40 
     41 # dic = (1,2,3,4)
     42 # print(type(dic),dic)
     43 # import json
     44 # str_d = json.dumps(dic)
     45 # print(type(str_d),str_d)
     46 #
     47 # dic_d = json.loads(str_d)
     48 # print(type(dic_d),dic_d)
     49 
     50 
     51 # json  dump  load  (他俩是关于文件的操作)
     52 
     53 # import json
     54 # dic = {1: "a", 2: "b"}
     55 # f = open('fff', 'w', encoding='utf-8')
     56 # json.dump(dic,f)
     57 # f.close()
     58 # 把字典写到文件里
     59 
     60 
     61 # import json
     62 # f = open('fff')
     63 # res = json.load(f)
     64 # f.close()
     65 # print(type(res),res)
     66 
     67 
     68 
     69 # import json
     70 # dic = {1: "中国", 2: "b"}
     71 # f = open("fff","w",encoding="utf-8")
     72 # json.dump(dic,f,ensure_ascii=False)  # 如果没有ensure_ascii=False,文件中会出现乱码,是bytes类型
     73 # f.close()
     74 # f = open("fff",encoding="utf-8")
     75 # res = json.load(f)
     76 # f.close()
     77 # print(type(res),res)
     78 # 注:用json中的dump与load 只能是一次性写进去,一次性读出来
     79 # 如果想一次一次的读出来,可以用dumps与loads代码如下
     80 # l = [{"k": "111"}, {"k2": "111"}, {"k3": "111"}]
     81 # f = open('file', 'w')
     82 # import json
     83 # for dic in l:
     84 #     str_dic = json.dumps(dic)
     85 #     f.write(str_dic+'
    ')
     86 # f.close()
     87 # f = open('file')
     88 # import json
     89 # l = []
     90 # for line in f:
     91 #     dic = json.loads(line.strip())
     92 #     l.append(dic)
     93 # f.close()
     94 # print(l)
     95 
     96 
     97 # pickle可以序列化任何数据类型
     98 # pickle 也提供四种方法  dumps loads  dump load
     99 # pickle 支持分次load  json不直接支持
    100 # import pickle
    101 # dic = {"k1": "v1", "k2": "v2", "k3": "v3"}
    102 # str_dic = pickle.dumps(dic)
    103 # print(str_dic)  # 一串二进制内容
    104 #
    105 # dic2 = pickle.loads(str_dic)
    106 # print(dic2)
    107 
    108 
    109 
    110 # 文件就是一个模块
    111 # 模块的命名必须符合命名规则
    112 # 先导入内置模块  再导入扩展的 例如Django 再倒入自定义的
    113 
    114 
    115 异常和错误
    116 # 程序中难免出现错误,而错误分成两种
    117 #    1 语法错误(这种错误,跟本过不了python解释器的语法检测,必须在程序执行前就改正)
    118 #    2 逻辑错误
    119 
    120 # 如果不写异常处理语句,输入字母的话,会报错(出红)
    121 # try:
    122 #     ret = int(input('number >>>'))
    123 #     print(ret*'*')
    124 # except ValueError:
    125 #     print("请输入数字")
    126 
    127 # 使用try和except就能处理异常
    128     # try是我们需要处理的代码
    129     # except 后面跟一个错误类型  当代码发生错误且错误类型符合
    130     #    的时候,就会执行except中的代码
    131     #    可以有多个except
    132 
    133 # 万能异常
    134 # try:
    135 #     [][3]
    136 #     ret = int(input("number>>>"))
    137 #     print(ret*"*")
    138 # except Exception:
    139 #     print("列表输入有误")
    140 
    141 
    142 
    143 
    144 
    145 # 面向对象
    146 # 人狗大战
    147 # def Person(name,blood,aggr,sex):
    148 #     person = {
    149 #         "name": name,
    150 #         "blood": blood,
    151 #         "aggr": aggr,  # 攻击力
    152 #         "sex": sex,
    153 #     }
    154 #     def attack(dog):
    155 #         dog["blood"] -= person["aggr"]  # 人打狗,狗掉血,人的攻击力多少,就掉多少血
    156 #         print("%s被打了,掉了%s的血" % (dog["name"], person["aggr"]))
    157 #     person["attack"] = attack
    158 #     return person
    159 #
    160 #
    161 # def Dog(name,blood,aggr,kind):
    162 #     dog = {
    163 #         "name": name,
    164 #         "blood": blood,  # 血量
    165 #         "aggr": aggr,  # 攻击力
    166 #         "kind": kind,  # 品种
    167 #     }
    168 #     def bite(person):
    169 #         person["blood"] -= dog["aggr"]
    170 #         print("%s被打了,掉了%s滴血" % (person["name"], dog["aggr"]))
    171 #     dog["bite"] = bite
    172 #     return dog
    173 #
    174 #
    175 # laoban = Dog("老板",1000,3,"不详")
    176 # alex = Person("狗蛋儿",100,2,"不详")
    177 # nezha = Person("哪吒",200,2,"不详")
    178 
    179 # # print(laoban)
    180 # # laoban["bite"](alex)
    181 #
    182 # alex["attack"](laoban)
    183 
    184 
    185 
    186 
    187 # class Person:
    188 #     country = "China"   # 创造了一个只要是这个类就一定有的属性
    189                                      # 类属性 也叫静态属性
    190 #     def __init__(self,*args):  # 初始化方法 self 是对象,是一个必须传的参数
    191 #         print(args)
    192 #
    193 # alex = Person("狗蛋哥",100,1,"不详")
    194 
    195 
    196 
    197 class Person:
    198     def __init__(self,*args):
    199         # print(self.__dict__)
    200         self.name = args[0]
    201         self.hp = args[1]
    202         self.sex = args[2]
    203         self.aggr = args[3]
    204         # print(self.__dict__)
    205         # print(id(self))
    206     def walk(self):     # 方法,一般情况下必须传self参数,且必须写在第一个,后面还可传其他参数
    207         print("走走走")
    208 #
    209 alex = Person("狗蛋儿", 100, 1, "不详")  # 类名还可以实例化对象,alex就是对象  #这个过程就是实例化
    210 print(alex.__dict__)
    211 alex.name = '精心'
    212 # alex.__dict__["name"] = "太白"
    213 print(alex.__dict__)
    214 print(alex.name)
    215 # print(alex)
    216 # print(Person.__dict__)  # 不管类还是对象,都可以调用__dict__这个属性
    217 
    218 # 对象 = 类名()
    219 # 过程:
    220    # 类名() 首先会创造出一个对象,创建了一个self变量
    221    # 调用init方法,类名括号里的参数会被这里接受
    222    # 执行init方法
    223    # 返回self
    224 # 对象能做的事
    225    # 查看属性
    226    # 调用方法
    227    # __dict__ 对于对象的增删改查操作都可以通过字典的语法进行
    228 # 类名能做的事
    229   # 实例化
    230   # 调用方法:只不过要自己传递self参数
    231   # 调用类中的属性
    232   # __dict__对于类中的名字只能看  不能操作
    233 
    234 # 注:本文是根据老男孩课程内容整理而成的,本文仅供个人笔记使用,如果有侵犯,请联系我,我立即撤销。
  • 相关阅读:
    10. 正则表达式匹配
    5. 最长回文子串
    板子总结
    2020: 学生查询
    解决apt-get出错
    03如何计算算法的复杂度
    ad如何从PCB中导出元件封装库
    调车遇到的问题及解决办法
    java报错与解决方法总结
    SWD下载k60
  • 原文地址:https://www.cnblogs.com/pioneerLee/p/10218281.html
Copyright © 2020-2023  润新知