zoukankan      html  css  js  c++  java
  • 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 # 注:本文是根据老男孩课程内容整理而成的,本文仅供个人笔记使用,如果有侵犯,请联系我,我立即撤销。
  • 相关阅读:
    Populating Next Right Pointers in Each Node II
    Populating Next Right Pointers in Each Node
    Construct Binary Tree from Preorder and Inorder Traversal
    Construct Binary Tree from Inorder and Postorder Traversal
    Path Sum
    Symmetric Tree
    Solve Tree Problems Recursively
    632. Smallest Range(priority_queue)
    609. Find Duplicate File in System
    poj3159最短路spfa+邻接表
  • 原文地址:https://www.cnblogs.com/pioneerLee/p/10218281.html
Copyright © 2011-2022 走看看