zoukankan      html  css  js  c++  java
  • python 模块

    1. 什么是模块
    模块就是一系列功能的集合体

    模块分为四个通用的类别:
      1 使用python编写的.py文件(*****)

      2 已被编译为共享库或DLL的C或C++扩展

      3 把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)(*****)

      4 使用C编写并链接到python解释器的内置模块

    模块有三种来源:
    1. 内置模块
    2. 第三方模块
    3. 自定义模块

    2. 为何要用模块
    1. 使用内置的或者第三方的模块的好处是:拿来主义,极大提升开发效率
    2. 使用自定义的模块的好吃是:将程序各部分组件共用的功能提取取出放到一个模块里,其他的组件通过导入的方式使用该模块,该模块即自定义的模块,好处是可以减少代码冗余
    3. 如何用模块
    import spam
    首次导入模块会发生三件事
    1.会产生一个模块的名称空间
    2.执行spam.py文件的内容,将产生的名字丢到模块的名称空间
    3.在当前执行文件中拿到一个名字spam,该名字指向模块的名称空间

    # 使用
    # print(money)

    # print(spam.money)
    # print(spam.read1)
    # print(spam.read2)
    # print(spam.change)
    # 补充:重命名模块名
    # import spam as sm
    # print(sm.money)

     from spam import money,read1,read2,change
    首次导入模块会发生三件事
    1. 会产生一个模块的名称空间
    2. 执行spam.py文件的内容,将产生的名字丢到模块的名称空间里
    3. 在当前执行文件中拿到名字read1,该名字指向模块的名称空间中的read1的值的地址
    #import总结
    #优点:指名道姓地问某一个名称空间要名字,不会与当前执行文件名称空间中的名字冲突
    #缺点:引用模块中的名字必须加前缀(模块名.),使用不够简洁

    #from...import总结
    #优点:引用模块中的名字不用加前缀(模块名.),使用更为简洁
    #缺点:容易与当前执行文件名称空间中的名字冲突

    查找模块路径的优先级
    1.内存
    2.内置模块
    3.sys.path(是以执行文件为准的)

    如何区分python文件的两种用途
    def f1():
        print('f1')
    
    def f2():
        print('f2')
    
    if __name__ == '__main__':
        f1()
        f2()
    
    # print(__name__)
    # 当文件被当作执行文件执行时__name__的值为__main__
    # 当文件被当作模块导入时__name__的值为模块名mmm


    json 与 pickle模块
    1. 什么是序列化
    序列化就是将内存中的数据类型转成另外一种格式

    即:
    字典---------序列化--------->其他的格式--------------->存到硬盘
    硬盘---读取---->其他格式----------反序列化-------->字典

    2. 为什么要序列化
    1. 持久保存程序的运行状态
    2. 数据的跨平台交互



    3. 如何序列化
    json:
    优点: 这种格式是一种通用的格式,所有编程语言都能识别
    缺点: 不能识别所有python类型
    强调:json格式不能识别单引号

    pickle
    优点: 能识别所有python类型
    缺点: 只能被python这门编程语言识别
    dic={'k1':True,'k2':10,'k3':'egon','k4':'你好啊',}
    ###json
    import json
    ##序列化
    dic_json=json.dumps(dic)
    print(dic_json,type(dic_json))
    ##持久化
    with open('a.json','wt',encoding='utf8') as f:
        f.write(dic_json)
    ##序列化+持久化
    with open ('a.json',mode='wt',encoding='utf-8') as f:
        json.dump(dic,f)
    ##从文件中读取json格式化的字符
    with open ('a.json','rt',encoding='utf8') as f:
        dic_json=f.read()
    #反序列化
    dic=json.loads(dic_json)
    print(dic,dic['k1'])
    #读取文件内容+反序列化
    dic=json.loda(f)
    print(dic['k1'])
    json
    import pcikle
    dic={'k1':True,'k2':10,'k3':'egon','k4':'你好啊',}
    dic_pkl=pickle.dumps(dic)
    print(dic_pkl)
    
    with open('b.pkl','wb') as f:
        f.write(dic_pkl)
    
    with open('b.pkl','rb') as f:
        s_pkl=f.read()
        s=pickle.loads(s_pkl)
    #===========>2 pickle.dump与pickle.load
    with open('c.pkl','wb') as f:
        pickle.dump(dic,f)
    with open('c.pkl',mode='rb') as f:
        dic=pickle.load(f)
    time与datatime模块
    1.时间戳
    print(time.time())
    2.格式化的字符
    print(time.strftime('%Y-%m-%d %H:%M:%S %p'))
    3.结构化的时间对象
    print(time.localtime())
    print(time.localtime().tm.hour)
    print(time.localtime().tm.wday)
    #print(time.gmtime())

    # 时间转换
    # 时间戳---->struct_time------->格式化的字符串
    # struct_time=time.localtime(123123)
    # print(struct_time)

    # print(time.strftime('%Y-%m-%d',struct_time))

    # 格式化的字符串---->struct_time------->时间戳
    # struct_time=time.strptime('2017-03-11','%Y-%m-%d')
    # print(struct_time)

    # print(time.mktime(struct_time))

    import datatime
    print(datetime.datetime.now())
    print(datetime.datetime.fromtimestamp(28318322))#转换时间戳
    print(datetime.datetime.now() + datetime.timedelta(days=3))
    print(datetime.datetime.now() - datetime.timedelta(days=3))
    print(datetime.datetime.now() + datetime.timedelta(days=-3))
    print(datetime.datetime.now() + datetime.timedelta(days=3,hours=3))

    random模块
    print(random.random())#随机0-1的小数
    print(random.randint(1,3))#1-3的整数
    print(random.randrange(1,3))
    #1-3的整数,顾头不顾尾
    print(random.uniform(1,3))#1-3的小数

    print(random.choice([1,'a','c']))
    print(random.sample([1,'a','c'],2))#选其中两个元素
    item=[1,3,5,7,9]
    random.shuffle(item)
    print(item)

    def make_code(max_size=5):
        res=''
        for i in range(max_size)
            num=str(random.randint(0,9))
            alp=chr(random.randint(65,90))
            res+=random.choice([num,alp])
    
        return res
    
    print(make_code())
    随机验证码生成















  • 相关阅读:
    iOS开发---iPhone SDK 包含哪些东西?
    COS-8文件系统
    COS-7设备管理
    COS-6主存管理
    COS-5资源分配与调度
    COS-4进程及进程管理
    饭卡管理系统学生E-R图
    COS-3OS的用户接口
    COS-2OS结构和硬件支持
    计算机操作系统-1绪论
  • 原文地址:https://www.cnblogs.com/BestSkye/p/10064804.html
Copyright © 2011-2022 走看看