美文网首页
Python ☞ day 7

Python ☞ day 7

作者: 浪子彦卿L | 来源:发表于2018-05-09 00:19 被阅读0次

    Python学习笔记之 date & datetime & 模块 & 包 & 第三方模块安装

    时间
    • UTC(世界协调时间):格林尼治天文时间,世界标准时间,在中国来说是UTC+8
    • DST(夏令时):是一种节约能源而人为规定时间制度,在夏季调快一个小时
    • 时间的表示形式:
    1. 时间戳
      以整型或浮点型表示时间的一个以秒为单位的时间间隔。这个时间间隔的基础值是从1970年1月1日零点开始计算

    2. 元组
      一种的Python的数据结构表示,这个元组有9个整型内容;
      year
      month
      day
      hours
      minutes
      seconds
      weekday
      Julia day
      flag (1 或 -1 或0)

    3. 格式化字符串
      %a 本地(locale)简化星期名称
      %A 本地完整星期名称
      %b 本地简化月份名称
      %B 本地完整月份名称
      %c 本地相应的日期和时间表示
      %d 一个月中的第几天(01 - 31)
      %H 一天中的第几个小时(24小时制,00 - 23)
      %I 第几个小时(12小时制,01 - 12)
      %j 一年中的第几天(001 - 366)
      %m 月份(01 - 12)
      %M 分钟数(00 - 59)
      %p 本地am或者pm的相应符
      %S 秒(01 - 61)
      %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周
      %w 一个星期中的第几天(0 - 6,0是星期天)
      %W 和%U基本相同,不同的是%W以星期一为一个星期的开始。
      %x 本地相应日期
      %X 本地相应时间
      %y 去掉世纪的年份(00 - 99)
      %Y 完整的年份
      %Z 时区的名字(如果不存在为空字符)
      %% ‘%’字符

    time模块

    import time

    #   返回当前时间的时间戳,浮点数形式,不需要参数
    c = time.time()
    print(c)
    
    #   将时间戳转为UTC时间元组
    t = time.gmtime(c)
    print(t)
    
    #   将时间戳转为本地时间元组
    b = time.localtime(c)
    print(b)
    
    #   将本地时间元组转成时间戳
    m = time.mktime(b)
    print(m)
    
    #   将时间元组转成字符串
    s = time.asctime(b)
    print(s)
     
    #   将时间戳转为字符串   time.asctime(time.localtime(time.time))
    p = time.ctime(c)
    print(p)
    
    #   将时间元组转换成给定格式的字符串,参数2为时间元组,如果没有参数2,默认转的是当前时间
    q = time.strftime("%Y-%m-%d %H:%M:%S",b)
    print(q)
    print(time.strftime("%Y-%m-%d %X"))
    
    #   将时间字符串转为时间元组
    print(time.strptime(q,"%Y-%m-%d %X"))
    
    #   延迟一个时间,整型或者浮点型
    time.sleep(4)
    
    #   返回当前程序的cpu执行时间
    #   Unix始终返回全部的运行时间
    #   windows从第二次开始,都是以第一次调用此函数的开始时间戳作为基数
    y1 = time.clock()
    print("%d" % y1)
    time.sleep(3)
    y2 = time.clock()
    print("%d" % y2)
    y3 = time.clock()
    print("%d" % y3)
    
    time.clock()
    sum = 0
    for i in range(100000000):
        sum += i
    print(time.clock())
    
    datetime模块
    • datetime比time高级了不少,可以理解为datetime基于time进行了封装,提供了各种使用的函数,datetime模块的接口更直观,更容易调用

    • 模块中的类:
      datetime 同时有时间和日期
      timedelta 主要用于计算时间的跨度
      tzinfo 时区相关
      time 只关注时间
      date 只关注日期

    #   获取当前时间
    d1 = datetime.datetime.now()
    print(d1)
    print(type(d1))
    print(datetime.datetime.now())
    
    #   获取指定时间
    d2 = datetime.datetime(1999, 10, 1, 10, 28, 25, 123456 )
    print(d2)
    print(datetime.datetime(1996,2,14,12,12,30,3232))
    
    #   将时间转为字符串
    d3 = d1.strftime("%y-%m-%d %X")
    print(d3)
    print(type(d3))
    
    #   将格式化字符串转为datetime对象
    #   注意:转换的格式要与字符串一致
    d4 = datetime.datetime.strptime(d3,"%y-%m-%d %X")
    print(d4)
    
    d5 = datetime.datetime(1999, 10, 1, 10, 28, 25, 123456 )
    d6 = datetime.datetime.now()
    d7 = d6 -d5
    print(d7)
    #   间隔的天数
    print(d7.days)
    #   间隔天数除外的秒数
    print(d7.seconds)
    
    日历模块

    import calendar

    
    #   返回指定某年某月的日历
    print(calendar.month(2018,5))
    
    #   返回指定年的日历
    print(calendar.calendar(2018))
    
    #   闰年返回True,否则返回False
    print(calendar.isleap(2000))
    
    #   返回某个月的weekday的第一天和这个月所有的天数
    print(calendar.monthrange(2018, 5))
    
    #   返回某个月以每一周为元素的列表
    print(calendar.monthcalendar(2018, 5))
    
    模块
    • 概述:目前代码比较少,写在一个文件中还体现不出什么缺点啊,但是随-着代码量越来越多,代码就越来越难以维护。
      为了解决难以维护的问题,我们把很多相似功能的函数分组,分别放到不同的文件中去。这样每个文件所包含的内容就相对较少,而且对于每一个文件的大致功能可以用文件名来体现。很多编程语言都是这么来组成代码结构。一个.py文件就是一个模块

    • 优点:
      1、提高代码的可维护性
      2、提高了代码的复用度,当一个模块完毕,可以被多个地方引用。
      3、引用其他的模块(内置模块和三分模块和自定义模块)
      4、避免函数名和变量名的冲突

    • 引入模块
      import sys
      import time
      import datetime
      print(sys.argv)

    # 获取命令行参数的列表(类似shell中调用脚本后面加$1 $2 $3)
    for i in sys.argv:
        print(i)
    name = sys.argv[1]
    age = sys.argv[2]
    hoby = sys.argv[3]
    print(name,age,hoby)
    
    #   自动查找所需模块的路径的列表(环境变量)
    print(sys.path)
    
    #   一个.py文件就是一个模块
    
    def sayGood():
        print("lee is a good man!")
    
    def sysNice():
        print("lee is a nice man!")
    
    def sysHandsome():
        print("lee is a handsome man!")
    
    • 引入模块
    1. import语句
    #   格式:import module1[, module2][, module3][, modulen]
    import time,random,os
    
    #   引入了一个自定义模块,不用加.py后缀
    import lee
    #   注意:一个模块只会被引入一次,不管你执行了多少次import。防止模块被多次引用
    
    #   使用模块中的内容
    #   格式:模块名.函数名/变量名
    lee.sayGood()
    
    1. from……import语句
    #   作用:从模块中导入一个指定的部分到当前的命名空间
    #   格式:from module import name1[, name2][, 省略号 namen]
    from lee import sysNice
    
    程序中的函数可以将模块中的同名函数覆盖
    def sysNice():
        print("*****")
    
    sysNice
    
    lee.sysNice()
    
    1. from……import *语句
    作用:可以把一个模块中所有的内容导入当前命名空间
    '''
    from lee import *
    #   最好不要过多使用
    
    '''
    程序中的函数可以将模块中的同名函数覆盖
    def sayGood():
        print("*****")
    sayGood()
    '''
    sayGood()
    
    __name__属性:
    模块就是一个可执行的.py文件,一个模块被另一个程序引用。我不想让模块中的某些代码执行,可以用__name__属性来使程序仅调用模块中的一部分
    
    '''
    #   每一个模块都有一个__name__属性,
    lee.sayGood()
    
    • 思考:如果不同的人编写的模块同名怎么办?

    • 解决:为了解决模块命名的冲突,引入了按目录来组织模块的方法,称为包

    • 特点:引入了包以后,只要顶层的包不与其他人发生冲突,那么模块都不会与别人的发生冲突

    • 注意:目录只有包含一个叫做“init.py"的文件才被认作是一个包,主要是为了避免一些滥竽充数的名字,基本上目前这个文件中什么也不用写

    • 使用第三方模块
      Mac:无需安装(自带)
      Linux:无需安装(自带)
      windows:勾选了pip和Add python.exe to Path

    #要安装三方模块,需要知道模块的名字
    #Pillow   非常强大的处理图像的工具库
    
    #     pip    install     Pillow
    #windows如果报错,则输入pip   install   --upgrade   pip
    
    #引入了三方库
    from PIL import Image
    #打开图片
    im = Image.open("111.jpg")
    #查看图片的信息
    print(im.format, im.size, im.mode)
    #设置图片的大小
    im.thumbnail((150, 100))
    #保存成新图片
    im.save("temp.jpg",  "JPEG")
    

    相关文章

      网友评论

          本文标题:Python ☞ day 7

          本文链接:https://www.haomeiwen.com/subject/vrnwrftx.html