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]
    
  • 相关阅读:
    【HDU2222】Keywords Search(AC自动机)
    -网络流题表
    【 POJ
    【 UVALive
    【POJ2699】The Maximum Number of Strong Kings(网络流)
    【UVALive
    【HDU3081】Marriage Match II (二分+最大流)
    【UVALive
    【LA2796】Concert Hall Scheduling(最大费用最大流)
    【 UVALive
  • 原文地址:https://www.cnblogs.com/chenshuo531702820/p/11103689.html
Copyright © 2011-2022 走看看