8-python-bas

Python 基础

  1. 模块分类

    1. 系统模块 sys,importlib,math
    2. 用户定义模块
    3. 第三方模块
  2. venv:隔离环境,环境的副本

    Python3.3以上的版本通过venv模块原生支持虚拟环境,提供与系统Python的隔离支持。每一个虚拟环境都有其自己的Python二进制(允许有不同的Python版本创作环境),并且可以拥有自己独立的一套Python包。他最大的好处是,可以让每一个python项目单独使用一个环境,而不会影响python系统环境,也不会影响其他项目的环境。

    • 优点
      • 使不同应用开发环境独立
      • 环境升级不影响其他应用,也不会影响全局的python环境
      • 防止系统中出现包管理混乱和版本冲突
  3. 内置模块——datetime

    1. time模块
      time模块中时间表现的格式主要有三种:

      • timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量
      • struct_time时间元组,共有九个元素组。
      • format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。
      import time
      #1.获得当前时间的时间戳,时间戳加减以秒为单位
      #      时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量
      begin_time=time.time()
      print(begin_time)               #1532517163.669289
      #     struct_time to timestamp
      print(time.mktime(time.localtime()))  #1532517163.0
      #2.生成struct_time
      print(time.localtime())        #time.struct_time(tm_year=2018, tm_mon=7, tm_mday=25, tm_hour=19, tm_min=9, tm_sec=58, tm_wday=2, tm_yday=206, tm_isdst=0)
      #     时间戳向struct_time转换
      print(time.localtime(time.time())) #time.struct_time(tm_year=2018, tm_mon=7, tm_mday=25, tm_hour=19, tm_min=9, tm_sec=58, tm_wday=2, tm_yday=206, tm_isdst=0)
      #3.生成format_time
      #     format_time to struct_time
      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)
      #     struct_time to format_time
      print(time.strftime("%Y-%m-%d %X",time.localtime()))      #2018-07-25 19:21:36
      

      格式参数:

      %Y 带世纪部分的十制年份

      %m 十进制表示的月份

      %d 十进制表示的每月的第几天

      %H 24小时制的小时

      %M 十时制表示的分钟数

      %S 十进制的秒数

      %c 标准时间,如:04/25/17 14:35:14 类似于这种形式

      %X 本地响应时间

    2. datatime

      datatime模块重新封装了time模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo。

      1. 获取当前时间
      date_now=datetime.now()
      frm_date=date_now.strftime('%Y-%m-%d')
      print(frm_date)
      
      1. date类
      from datetime import *
      import time
      #1.date类
      #     静态方法和字段
      print(date.max,date.min,date.today())   #9999-12-31 0001-01-01 2018-07-25
      #         时间戳转时间对象
      print(date.fromtimestamp(time.time()))  #2018-07-25
      #    方法和属性
      d1 = date(2011,6,3)
      #         年,月,日
      print(d1.year,d1.month,d1.day)
      #         生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
      tomorrow = d1.replace(day = 27)
      print(tomorrow)
      #         返回日期对应的time.struct_time对象
      print(d1.timetuple())
      #         时间对象转时间戳
      timestamp=int(time.mktime(d1.timetuple()))
      print(timestamp)      #1307030400
      #         返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推
      d1.weekday()
      d1.isoweekday() #往后推1
      d1.isocalendar()  #返回格式如(year,month,day)的元组
      #         strftime和time模块一样
      
      1. time类

      time.min、time.max:time类所能表示的最小、最大时间。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);

      time.resolution:时间的最小单位,这里是1微秒;

      t1 = datetime.time(10,23,15)#time对象
      t1.hour;t1.minute;t1.second;t1.microsecond#时、分、秒、微秒;
      t1.tzinfo#时区信息;
      t1.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )#创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变)
      t1.isoformat()#返回型如"HH:MM:SS"格式的字符串表示
      t1.strftime(fmt)#同time模块中的format
      
      1. datetime类
        相当于date和time结合起来,方法和time,date差不多
      print(datetime.today(),datetime.now())   #2018-07-25 20:08:20.443733
      print(datetime.fromtimestamp(time.time()))  #时间戳转时间
      print(datetime.combine(date,time))
      
      1. timedelta类:时间加减
      dt = datetime.now()
      #日期减一天
      dt1 = dt + timedelta(days=-1)#昨天
      dt2 = dt - timedelta(days=1)#昨天
      dt3 = dt + timedelta(days=1)#明天
      delta_obj = dt3-dt
      print type(delta_obj),delta_obj#<type 'datetime.timedelta'> 1 day, 0:00:00
      print delta_obj.days ,delta_obj.total_seconds()#1 86400.0
      

      使用timedelta可以很方便的在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算,如果要计算月份则需要另外的办法。 ```

    3. 时间格式的相互转换

    # 1. 字符串转datetime
    string = '2017/11/10 02:29:58'.replace('/','-')
    # string = '2017-11-10 02:29:58'
    time1 = datetime.strptime(string, '%Y-%m-%d %H:%M:%S')
    print(time1)
    print(type(time1))
    
    # 2. datetime转string
    time1_str = datetime.strftime(time1, '%Y-%m-%d %H:%M:%S')
    print(type(time1_str))
    print(time1_str)
    
    # 3. 时间戳转时间对象
    
    time2=time.time()  #时间戳
    time2_str = datetime.fromtimestamp(time2)
    
    print(time2_str)
    
    # 4. 时间对象转为时间戳
    timeStamp = int(time.mktime(date_now.timetuple()))
    print(timeStamp)
    
    # 5. 计算时间差
    
    days=(date_now-time1).days
    seconds=(date_now-time1).seconds
    print(seconds)
    
  4. json

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。

    Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:

    • json.dumps	    将Python 字典类型转换为 JSON 对象
      
    • json.loads	    将 JSON 对象转换为 Python 字典
      
    import json
    # 字典对象
    
    dict_lesson={
        "name":"python",
        "score":3
    }
    json_lesson=json.dumps(dict_lesson)
    
    print(type(json_lesson))   #str
    print(type(json.loads(json_lesson))) #dict
    

    如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据

    content=[
      {"name":"nick","age":"12"},
      {"name":"tom","age":"13"},
      {"name":"helen","age":"22"},
      {"name":"tony","age":"32"}
    ]
    
    with open('users.json', 'w') as f:
        json.dump(content, f)
    
    with open('users.json','r+') as f:
        data = json.load(f)
        print(data)
        print(data[2]['name'])
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值