• 模块介绍2


    day15

    一、包:

    1、什么是包:

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

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

    2、为何要用包:

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

    3、如何用包:

    import sys      #导入sys模块  以修改环境变量
    sys.path.append(r'D:脱产5期内容day16dir')   #为了使用包,序将包所在的路径(上级目录)添加到环境变量中
    # 包下面的__ init__.py 需要导入包中的其他py文件中的功能和方法(将其名称放入包所指向的名称空间中)
    import aaa     # aaa--------->__init__.py   使用包时的导入包(aaa为包名)的过程(实质是执行包下面的__ init__.py文件 
    # print(aaa.xxx)
    # aaa.func1() 可正常调用包下面其他py文件中的功能和属性

    二、序列化和反序列化

    1、什么是序列化:

      序列化就是将内存中的数据类型转成另外一种格式。

    #序列化:把内存中的数据结构--------序列化--------->其他的格式--------------->存到硬盘
    #反序列化:硬盘---读取---->其他格式----------反序列化-------->内存中的数据结构

    2、为什么要序列化

      1、持久保存程序的运行状态;

      2、数据的跨平台交互。

      3、如何序列化:

        a、json

        优点:这种格式是一种通用的格式,所有编程语言都能识别

        缺点:不能识别所有python类型

        注:json格式不能识别单引号。

    # ========================json
    import json
    #
    # dic={'k1':True,'k2':10,'k3':'egon','k4':'你好啊'}
    #
    # # # 序列化
    # dic_json=json.dumps(dic)
    # print(dic_json,type(dic_json))
    # #
    # # # 持久化
    # with open('a.json',mode='wt',encoding='utf-8') as f:
    #     f.write(dic_json)
    # 序列化+持久化
    # with open('a.json',mode='wt',encoding='utf-8') as f:
    #     json.dump(dic,f)
    ​
    ​
    # import json
    # # 从文件中读取json格式化的字符
    # with open('a.json',mode='rt',encoding='utf-8') as f:
    #     dic_json=f.read()
    #
    # # 反序列化
    # dic=json.loads(dic_json)
    # print(dic,dic['k1'])
    # 读取文件内容+发序列化
    # with open('a.json',mode='rt',encoding='utf-8') as f:
    #     dic=json.load(f)
    #     print(dic['k1'])

        b、pickle

        优点:能识别所有Python类型

        缺点:只能被python这门编程语言识别

    import pickle
    dic={'k1':True,'k2':10,'k3':'egon','k4':'你好啊',}
    ​
    #===========>1 pickle.dumps与pickle.loads
    # dic_pkl=pickle.dumps({1,2,3,4})
    # # print(dic_pkl)
    #
    # with open('b.pkl',mode='wb') as f:
    #     f.write(dic_pkl)
    # with open('b.pkl',mode='rb') as f:
    #     s_pkl=f.read()
    #     s=pickle.loads(s_pkl)
    #     print(type(s))
    #===========>2 pickle.dump与pickle.load
    # with open('c.pkl',mode='wb') as f:
    #     pickle.dump(dic,f)
    #with open('c.pkl',mode='rb') as f:
    #    dic=pickle.load(f)
    #    print(dic,type(dic))

    三、时间模块(time&datetime)

    1、time模块

    import time
    # 1. 时间戳
    # print(time.time())  #获取当前的时间戳(自1970年至今按秒计算)
    # 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.localtime().tm_yday)
    # 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))
    ​
    补充:
     #--------------------------转换时间
     # localtime([secs])
     # 将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。
     time.localtime()
     time.localtime(1473525444.037215) 
     # gmtime([secs]) 和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。
     # mktime(t) : 将一个struct_time转化为时间戳。 print(time.mktime(time.localtime()))#1473525749.0
     # strftime(format[, t]) : 把一个代表时间的元组或者struct_time(如由time.localtime()和
     # time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个
     # 元素越界,ValueError的错误将会被抛出。
     print(time.strftime("%Y-%m-%d %X", time.localtime()))#2016-09-11 00:49:56
     # time.strptime(string[, format])
     # 把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
     print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))
     #time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6,
     #  tm_wday=3, tm_yday=125, tm_isdst=-1)
     #在这个函数中,format默认为:"%a %b %d %H:%M:%S %Y"
     #--------------------------转换时间
     # asctime([t]) : 把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。
     # 如果没有参数,将会将time.localtime()作为参数传入。
     print(time.asctime())#Sun Sep 11 00:43:43 2016
     # ctime([secs]) : 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为
     # None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
     print(time.ctime())  # Sun Sep 11 00:46:38 2016
     print(time.ctime(time.time()))  # Sun Sep 11 00:46:38 2016

    2、datetime模块

    #时间加减
    import datetime
    ​
    # print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
    #print(datetime.date.fromtimestamp(time.time()) )  # 时间戳直接转成日期格式 2016-08-19
    # print(datetime.datetime.now() )
    # print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
    # print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
    # print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
    # print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
    ​
    ​
    # c_time  = datetime.datetime.now()
    # print(c_time.replace(minute=3,hour=2)) #时间替换

    四、random模块

     import random  
     print(random.random())#(0,1)----float    大于0且小于1之间的小数  
     print(random.randint(1,3))  #[1,3]    大于等于1且小于等于3之间的整数  
     print(random.randrange(1,3)) #[1,3)    大于等于1且小于3之间的整数  
     print(random.choice([1,'23',[4,5]]))#1或者23或者[4,5] 
     print(random.sample([1,'23',[4,5]],2))#列表元素任意2个组合 
     print(random.uniform(1,3))#大于1小于3的小数,如1.927109612082716  
     item=[1,3,5,7,9]
     random.shuffle(item) #打乱item的顺序,相当于"洗牌"
     print(item)
    ​
    # item=[1,3,5,7,9]
    # random.shuffle(item)
    # print(item)

      验证码实例:

    import random
    def make_code(n):
        res=''
        for i in range(n):
            s1=chr(random.randint(65,90))
            s2=str(random.randint(0,9))
            res+=random.choice([s1,s2])
        return res
    ​
    print(make_code(9))

     

  • 相关阅读:
    IONIC 开发的Android应用程序签名(或重新签名)详解
    ionic 打包签名
    ionic 开发APP 安装配置详解以及 cordova 环境配置详细过程
    windows 下面安装npm
    Nginx 开启gzip 压缩
    移动端头像上传AJax input file
    移动端头像上传
    Linux自己安装redis扩展
    Redis的简介与安装(windows)
    http_build_query()就是将一个数组转换成url 问号?后面的参数字符串,并且会自动进行urlencode处理,及它的逆向函数
  • 原文地址:https://www.cnblogs.com/peng-zhao/p/10072689.html
Copyright © 2020-2023  润新知