zoukankan      html  css  js  c++  java
  • 包与模块的使用

    包:

    包就是一个包含有_ _ init _ _.py文件的文件夹,所以我们创建包的目的就是为了用文件夹将文件/模块组织起来

    需要强调的是:
      1. 在python3中,即使包下没有__init__.py文件,import 包仍然不会报错,而在python2中,包下一定要有该文件,否则import 包报错
    
      2. 创建包的目的不是为了运行,而是被导入使用,记住,包只是模块的一种形式而已,包的本质就是一种模块
    

    为何要使用包

    包的本质就是一个文件夹,那么文件夹唯一的功能就是将文件组织起来
    随着功能越写越多,我们无法将所以功能都放到一个文件中,于是我们使用模块去组织功能,而随着模块越来越多,我们就需要用文件夹将模块文件组织起来,以此来提高程序的结构性和可维护性
    

    模块的使用

    序列化:

    我们把内存中的某一类的数据,转换成一种可以被其它语言共享的格式存到硬盘中称之为序列化.

    反序列化:

    把硬盘中某一类格式转换成可以使用的数据称之为反序列化

    为什么要序列化:

    1.存档:把内存中的数据持久化的到硬盘

    2.跨平台交换数据

    ​ 在python中:

    ​ 存档推荐使用=>pickle格式

    ​ 跨平台交互=>推荐使用json格式

    3.如何序列化:

    普通的序列化方式:

    1.序列化
    items=["圣剑","蝴蝶","BKB"]
    
    
    dic_str=str(items)
    
    with open('db.txt',mode='wt',encoding="utf-8") as f:
        f.write(dic_str)
    
    2.反序列化
    with open('db.txt',mode='rt',encoding='utf-8') as f:
        data=f.read()  # "['圣剑', '蝴蝶', 'BKB']"
    
        items=eval(data)
        print(items[0])
    
    json模块
    import json
        
    序列化方式一:
    t={"a":1,"b":2}  # 字典=======》json格式的字符串:"[1,2,3]"
    
    res=json.dumps(t)
    print(res,type(res))
    
    with open("a.json",mode='wt',encoding='utf-8') as f:
        f.write(res)
    
    json反序列化方式一:
    with open("a.json",mode='rt',encoding='utf-8') as f:
        data=f.read()
        dic=json.loads(data)
        print(dic,type(dic))
    
    res=json.loads('{"k1":111}')
    print(res['k1'])
    
    json序列化方式二:
    t={"a":1,"b":2}  # 字典=======》json格式的字符串:"[1,2,3]"
    
    
    with open("b.json",mode='wt',encoding='utf-8') as f:
        json.dump(t,f)
    
    json反序列化方式二:
    with open("b.json",mode='rt',encoding='utf-8') as f:
        dic=json.load(f)
        print(dic,type(dic))
    
    pickle模块

    优点:可以识别所有python类型

    缺点:只能用于python中,无法跨平台交互

    import pickle
    
    # s = {1,2,3,4,5}
    
    #
    
    # res=pickle.dumps(s)
    
    # # print(res,type(res))
    
    # with open('a.pkl',mode='wb') as f:
    
    #     f.write(res)
    
    with open('a.pkl',mode='rb') as f:
        data=f.read()
        s=pickle.loads(data)
        print(type(s))
    
    hashlib模块

    hashlib:hash是一种算法(md5sha256sha512等),我们为该算法传入内容,该算法会计算得到一串hash值

    hash值具备以下三个特点:

    ​ 1.如果传入的内容一样,并采用hash算法也一样,那么得到这个hash值一定是一样的

    ​ 2,hash值的长度取决于采用的算法,与传入的文本内容的大小无关

    ​ 3,hash值不可逆

    import hashlib
    
    m=hashlib.md5()# m=hashlib.sha256()
    
    m.update('hello'.encode('utf8'))
    print(m.hexdigest())  #5d41402abc4b2a76b9719d911017c592
    
    m.update('alvin'.encode('utf8'))
    
    print(m.hexdigest())  #92a7e713c30abbb0319fa07da2a5c4af
    
    m2=hashlib.md5()
    m2.update('helloalvin'.encode('utf8'))
    print(m2.hexdigest()) #92a7e713c30abbb0319fa07da2a5c4af
    
    '''
    注意:把一段很长的数据update多次,与一次update这段长数据,得到的结果一样
    但是update多次为校验大文件提供了可能。
    '''
    
  • 相关阅读:
    grunt 使用比较
    一些技术要点
    git 使用笔记
    oo的一些概念
    借用构造函数继承非原型
    bower解决js的依赖管理
    需要了解的一些东西
    一些常用的代码
    js模式(一):单例模式
    写给自己的计划
  • 原文地址:https://www.cnblogs.com/lgh8023/p/13400099.html
Copyright © 2011-2022 走看看