python基础 day18 模块回顾

一、今日内容大纲

  1. 自定义模块

  2. 模块是什么

    • 模块就是一个py文件

  3. 为什么要有模块?

    • 拿来即用,提高开发效率。

    • 便于管理和维护。

      1. 什么是脚本

      • 脚本就是py文件,长期保存代码的文件

      1. 模块的分类

        1. 内置模块:python解释器自带的 time 、datetime os、sys、 hashlip等等

        2. 第三方模块:一些大牛写的 pip install 模块名称 beautifil_soup、Django

        3. 自定义模块:自己写的一个py文件

      2. import的使用

    • 第一次引用模块,会先把模块内的代码执行一次,加载到内存中,下次引用会直接从内存中取,如果已经加载了,不在重新加载

      1. 第一次导入模块执行的三件事

      • 在内存中创建一个以tbjx命名的名称空间

      • 执行此名称空间所有可执行的代码

      • 通过tbjx.的方式引用模块内的代码

         

         

        1. 被导入模块有独立的名称空间

      •  

         

        1. 为模块起别名

      • 简单便捷

      • 有利于简化了代码

         

         

        1. 导入多个模块

       

       

      1. form 。。。。import。。。

        1. form 。。。。import。。。的使用

        2. form 。。。。import。。。与import对比

      • form 。。。。import。。。 用起来更方便

      • form 。。。。import。。。容易与本文件内的变量产生冲突

         

         

         

         

        1. 一行导入多个

        2. form 。。。。import *

        3. 模块循环导入的问题

        4. py文件的两种功能

      • 自己用(脚本)

        __name__  == __main__
      • 被被人引用(模块使用)

        __name__ == 模块名称

         

        1. 模块的搜索路径

      • 先从内存中寻找有没有已经命名的模块名称空间

      • 它会从内置模块中找,time、datetime、os、sys等等

      • 它从sys.path中找寻

      1. json与pickle模块

        1. 序列化

      • 将一种数据结构(list、str、tuple、dict、get)转换成一种特殊的序列

        1. 反序列化

      • 将这个特殊的序列反转会原来的数据结构

      • 特殊的序列:(特殊的字符串,bytes)

        1. 为什么要有序列化模块

      序列化——> bytes:文件的存储,网络的传输

       

       

       

       

      网络传输:

        l1 = [i for i in range(1000)]
       print(l1)
       # print(lst.encode("utf-8")) # 'list' object has no attribute 'encode'不能直接转
       #先转成str在转换
       s1 = str(l1)
       print(s1)
       b1 = s1.encode("utf-8")
       print(b1)
       
       #接收到后进行反系列化
       s2 = b1.decode("utf-8")
       print(s2)

      将数据结构转换成str可以,但是在转换回去,现阶段不行

      我们急需一个特殊的字符串,将所有的数据结构可以转换成这个特殊的字符串。并且还可以转换回去。

      • json:

        1. 不同语言之间可以使用

        2. 缺点L支持的python数据类型比较少: dict,list, tuple,str,int, float,True,False,None

      • pickle:

        1. 只能是Python语言遵循的一种数据转化格式,

        2. 只能在python语言中使用。

        3. 支持

        4. Python所有的数据类型包括实例化对象。

      • json序列化

         

         

         

         

        1. 序列化模块的分类

      1. hashlip模块

    • 包含很多的加密算法MD5

    • 用途

      • 密码加密

      • 文件的校验

    • 用法

      • 将bytes类型字节转换成固定长度的16进制字符串

      • 不同的bytes利用相同的算法(md5)转换的结果一定不同

      • 相同的bytes利用相同的算法(md5)转换的结果一定相同

        s1 = "fdhaskjhfdsak老板都会附件是看"
        import hashlib
        ret = hashlib.md5()
        ret.update(s1.encode("utf-8"))
        print(ret.hexdigest())  #ca82ece99fac5f6649293c109e5172c0
        #md5
        #加盐
        s1 = "fdhaskjhfdsak老板都会附件是看"
        import hashlib
        ret = hashlib.md5('太白金星'.encode("utf-8"))
        ret.update(s1.encode("utf-8"))
        print(ret.hexdigest())  #ca82ece99fac5f6649293c109e5172c0
        #md5


        #动态加盐()切片
        s1 = "fdhaskjhfdsak老板都会附件是看"
        import hashlib
        ret = hashlib.md5('太白金星'[::2].encode("utf-8"))
        ret.update(s1.encode("utf-8"))
        print(ret.hexdigest())  #ca82ece99fac5f6649293c109e5172c0
        #md5

         

         

 

 

posted @ 2021-01-02 10:15  小鱼鱼与黄黄  阅读(106)  评论(0编辑  收藏  举报