zoukankan      html  css  js  c++  java
  • 16.Python略有小成(内置模块Ⅱ)

    Python(内置模块Ⅱ)

    一、规范化开发

    1. 一个py文件中

      • 文件加载问题
      • 代码可读性,查询差
    2. 要将一个py文件分开,合理的分成多个py文件

      • 配置文件放在一起 : 一些轻易不改变的变量,一般命名 settings.py
      • 主逻辑函数放在一起 : 一般命名 src.py
      • 辅助功能函数放在一起 : 公共组件部分,装饰器,log日志,一般命名 common.py
      • 程序启动开关 : 放在明显位置,便于开启程序,一般命名 starts.py
      • 数据库文件 : register文件,文本数据库
      • 日志 : log文件
    3. 文件夹命名规范

      • bin 文件夹放启动文件
      • conf 放配置文件
      • core 放核心文件 主逻辑
      • lib 放公共组件文件
      • db 放数据库文件
      • log 放日志文件
      • 外加一个使用说明,README,此为文件

    二、time模块

    1. 与实践相关的模块三种形式:

      • 时间戳 : time.time 时差,计时.....

        通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。

      • 格式化时间(人类看得懂的时间) : 2019-6-28 12:00

        %y 两位数的年份表示(00-99)
        %Y 四位数的年份表示(000-9999)
        %m 月份(01-12)
        %d 月内中的一天(0-31)
        %H 24小时制小时数(0-23)
        %I 12小时制小时数(01-12)
        %M 分钟数(00=59)
        %S 秒(00-59)
        %a 本地简化星期名称
        %A 本地完整星期名称
        %b 本地简化的月份名称
        %B 本地完整的月份名称
        %c 本地相应的日期表示和时间表示
        %j 年内的一天(001-366)
        %p 本地A.M.或P.M.的等价符
        %U 一年中的星期数(00-53)星期天为星期的开始
        %w 星期(0-6),星期天为星期的开始
        %W 一年中的星期数(00-53)星期一为星期的开始
        %x 本地相应的日期表示
        %X 本地相应的时间表示
        %Z 当前时区的名称
        %% %号本身
        python中时间日期格式化符号:
        
      • 元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)

    2. 我们先导入time模块,来认识一下python中表示时间的几种格式:

      #导入时间模块
      >>>import time
      
      #时间戳
      >>>time.time()
      1500875844.800804
      
      #时间字符串
      >>>time.strftime("%Y-%m-%d %X")
      '2017-07-24 13:54:37'
      >>>time.strftime("%Y-%m-%d %H-%M-%S")
      '2017-07-24 13-55-04'
      
      #时间元组:localtime将一个时间戳转换为当前时区的struct_time
      time.localtime()
      time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24,
                tm_hour=13, tm_min=59, tm_sec=37, 
                       tm_wday=0, tm_yday=205, tm_isdst=0)
      
    3. 几种格式之间的转换

      # 格式化时间 ---->  结构化时间
      ft = time.strftime('%Y/%m/%d %H:%M:%S')
      st = time.strptime(ft,'%Y/%m/%d %H:%M:%S')
      print(st)
      # 结构化时间 ---> 时间戳
      t = time.mktime(st)
      print(t)
      
      # 时间戳 ----> 结构化时间
      t = time.time()
      st = time.localtime(t)
      print(st)
      # 结构化时间 ---> 格式化时间
      ft = time.strftime('%Y/%m/%d %H:%M:%S',st)
      print(ft)
      

      #结构化时间 --> %a %b %d %H:%M:%S %Y串
      #time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
      >>>time.asctime(time.localtime(1500000000))
      'Fri Jul 14 10:40:00 2017'
      >>>time.asctime()
      'Mon Jul 24 15:18:33 2017'
      
      #时间戳 --> %a %d %d %H:%M:%S %Y串
      #time.ctime(时间戳)  如果不传参数,直接返回当前时间的格式化串
      >>>time.ctime()
      'Mon Jul 24 15:19:07 2017'
      >>>time.ctime(1500000000)
      'Fri Jul 14 10:40:00 2017' 
      
      t = time.time()
      ft = time.ctime(t)
      print(ft)
      
      st = time.localtime()
      ft = time.asctime(st)
      print(ft)
      
      import time
      true_time=time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S'))
      time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S'))
      dif_time=time_now-true_time
      struct_time=time.gmtime(dif_time)
      print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,
                                             struct_time.tm_mday-1,struct_time.tm_hour,
                                             struct_time.tm_min,struct_time.tm_sec))
      
      计算时间差
      

    三、datetime模块

    # datatime模块
    import datetime
    now_time = datetime.datetime.now()  # 现在的时间
    # 只能调整的字段:weeks days hours minutes seconds
    print(datetime.datetime.now() + datetime.timedelta(weeks=3)) # 三周后
    print(datetime.datetime.now() + datetime.timedelta(weeks=-3)) # 三周前
    print(datetime.datetime.now() + datetime.timedelta(days=-3)) # 三天前
    print(datetime.datetime.now() + datetime.timedelta(days=3)) # 三天后
    print(datetime.datetime.now() + datetime.timedelta(hours=5)) # 5小时后
    print(datetime.datetime.now() + datetime.timedelta(hours=-5)) # 5小时前
    print(datetime.datetime.now() + datetime.timedelta(minutes=-15)) # 15分钟前
    print(datetime.datetime.now() + datetime.timedelta(minutes=15)) # 15分钟后
    print(datetime.datetime.now() + datetime.timedelta(seconds=-70)) # 70秒前
    print(datetime.datetime.now() + datetime.timedelta(seconds=70)) # 70秒后
    
    current_time = datetime.datetime.now()
    # 可直接调整到指定的 年 月 日 时 分 秒 等
    
    print(current_time.replace(year=1977))  # 直接调整到1977年
    print(current_time.replace(month=1))  # 直接调整到1月份
    print(current_time.replace(year=1989,month=4,day=25))  # 1989-04-25 18:49:05.898601
    
    # 将时间戳转化成时间
    print(datetime.date.fromtimestamp(1232132131))  # 2009-01-17
    

    四、random模块

    >>> import random
    #随机小数
    >>> random.random()      # 大于0且小于1之间的小数
    0.7664338663654585
    >>> random.uniform(1,3) #大于1小于3的小数
    1.6270147180533838
    #恒富:发红包
    
    #随机整数
    >>> random.randint(1,5)  # 大于等于1且小于等于5之间的整数***
    >>> random.randrange(1,10,2) # 大于等于1且小于10之间的奇数***
    
    #随机选择一个返回
    >>> random.choice([1,'23',[4,5]])  # #1或者23或者[4,5]
    #随机选择多个返回,返回的个数为函数的第二个参数***
    >>> random.sample([1,'23',[4,5]],2) # #列表元素任意2个组合,可控制元素个数***
    [[4, 5], '23']
    
    
    #打乱列表顺序
    >>> item=[1,3,5,7,9]
    >>> random.shuffle(item) # 对原列表打乱次序
    >>> item
    [5, 1, 3, 7, 9]
    >>> random.shuffle(item)
    >>> item
    [5, 9, 7, 1, 3]
    
  • 相关阅读:
    Python 类中方法的内部变量,命名加'self.'变成 self.xxx 和不加直接 xxx 的区别
    用foreach遍历 datagridView 指定列所有的内容
    treeView1.SelectedNode.Level
    YES NO 上一个 下一个
    正则 单词全字匹配查找 reg 边界查找 精确匹配 只匹配字符 不含连续的字符
    抓取2个字符串中间的字符串
    sqlite 60000行 插入到数据库只用不到2秒
    将多行文本以单行的格式保存起来 读和写 ini
    将秒转换成时间格式
    richtextbox Ctrl+V只粘贴纯文本格式
  • 原文地址:https://www.cnblogs.com/chenshuo531702820/p/11103689.html
Copyright © 2011-2022 走看看