模块知识点补充



一、绝对导入和相对导入

1.绝对导入

  • 1> 什么是。绝对导入?
  • 依据执行文件的sys.path中的根目录,一层层往下查找
  • 由于pycharm会把项目根目录自动添加到sys.path中去,所以依据项目根目录一层层向下查找是绝对不会出错的
  • 如果不是在pycharm中运行代码,则需要手动将根目录添加到sys.path中去(后期有os模块帮我们自动添加)
  • 2> 代码实现:
from a.b.c import d.py

2.相对导入

  • 1> ’ . ’ 的不同含义
    • . 一个点:意思是当前路径
    • … 两个点:意思是上一层路径
    • …/… 意思是上上一层路径
  • 2> 什么是相对导入?
  • 以当前模块的路径为准,与执行文件的路径无关
  • 3> 特点
    • 相对导入只能在模块中使用
    • 相对导入在项目比较复杂的情况下可能会出错

3.总结

综上所述,更推荐使用绝对导入

二、包

  • 1.什么是包?

    • 含有一个__ init__.py文件的文件夹
  • 2.包的功能?

    • 里面存放多个.py文件(模块文件),便于管理
  • 3.在模块导入的功能上包和普通的文件夹有啥区别?

    • 1> 包:执行文件只能够调用包中__ init__.py文件中有的名字,所以需要自己手动将自定义模块名导入到init文件中去,但是也可以通过绝代查找的方式跳过 init文件,直接把自定义模块导入执行文件
    • 2> 文件夹:可以通过绝对导入的方式包自定义模块导入执行文件
  • 4.导入语法

    • import 包名
import package1

三、编程思想的转变

  • 阶段1:小白阶段:过程式编程思维,每天写面条版代码
  • 阶段2:函数阶段:学会的用函数封装各种功能
  • 阶段3:模块阶段:根据不同的功能将代码拆分到各个模块中去,便于管理和调用

四、软件开发目录规范

  • bin文件夹:存放启动文件start.py (start.py文件也可以直接放到项目根目录下,这样的话系统会自动添加路径)
  • conf文件夹:存放配置文件settings.py
  • core文件夹:存放核心代码文件src.py
  • db文件夹:数据库文件,存放程序所需要调用的数据文件 (后期db文件夹会被数据库取代)
  • log文件夹:存放日志文件,具有记录的功能 (后期项目中log文件夹会被专门的日志服务替代)
  • lib文件夹:用于存放程序的公共功能common.py
  • interface文件夹:用于存放程序的接口文件
  • requirements文件夹:存放第三方模块名称和版本
  • readme文本文件:说明程序的功能和一些相关的资料

五、常见的内置模块

  • 1.collections模块

    • 功能:给我们提供了更多的数据类型

    • 常用的方法

    • 1> nametuple:创建一个命名元组子类的工厂函数

    • 代码实现

    • from collections import namedtuple
      
      point = namedtuple('三维坐标', ['x', 'y', 'z'])  # 书写方式1
      point = namedtuple('三维坐标', 'x y z')  # 书写方式2
      
      res1 = point(1, 2, 3)
      
      print(res1)  # 三维坐标(x=1, y=2, z=3)
      
      print(res1.x)  # 1
      print(res1.y)  # 2
      print(res1.z)  # 3
      
      
    • 实际应用

    • p = namedtuple('扑克', ['花色', '点数'])
      
      res1 = p('红桃', 'K')
      res2 = p('黑方', '5')
      
      print(res1)  # 扑克(花色='红桃', 点数='K')
      print(res2)  # 扑克(花色='黑方', 点数='5')
      
    • 2> deque:双端队列,可以实现两端快速添加(append)和弹出(pop)数据

    • 代码实现

    • from collections import deque
      
      q = deque()
      q.append(111)   
      q.append(222)
      q.append(333)
      q.append(444)
      q.append(555)
      q.append(666)
      print(q)  # [111, 222, 333, 444, 555, 666]
      
      q.appendleft(777)
      print(q)  # [777, 111, 222, 333, 444, 555, 666]
      
      q.pop()
      print(q)  # [777, 111, 222, 333, 444, 555]
      
      q.popleft()
      print(q)  # [111, 222, 333, 444, 555]
      
    • 3> OrderedDict : 有序词典

    • 代码实现

    • from collections import OrderedDict
      
      d = OrderedDict(a=1, b=2, c=3, d=4, e=5)
      print(d)  # OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])
      
    • 4> Counter : 计数功能

    • res1 = 'aaablbblbisllssaa'
      from collections import Counter
      
      res1 = Counter(res1)
      print(res1)  # Counter({'a': 5, 'b': 4, 'l': 4, 's': 3, 'i': 1})
      
  • 2.time模块

    • 1.时间戳:time.time()

    • 代码实现

    • import time
      
      print(time.time())  # 1657785161.7287323
      
    • 2.结构化时间:time.gmtime()

    • 代码实现

    • import time
      
      print(time.gmtime())  # time.struct_time(tm_year=2022, tm_mon=7, tm_mday=14, tm_hour=7, tm_min=54, tm_sec=2, tm_wday=3, tm_yday=195, tm_isdst=0)
      
    • 3.格式化时间strftime(‘%Y-%m-%d %X’)

    • 代码实现

    • import time
      
      print(time.strftime('%Y-%m-%d  %X'))  # 2022-07-14  16:01:08
      print(time.strftime('%Y-%m-%d  %H-%M-%S'))  # 2022-07-14  16:01:08
      
    • 4.不同时间格式之间的相互转换

      • 1> 时间戳和结构化时间之间的相互转换

        import time
        
        a = time.time()  # 时间戳
        b = time.gmtime()  # 结构化时间
        
        print(time.gmtime(a))  # 时间戳>>>结构化时间  
        print(time.mktime(b))  # 结构化时间>>>时间戳
        
      • 2> 格式化时间和结构化时间之间的相互转换

      • import time
        
        b = time.gmtime()  # 结构化时间
        c = time.strftime('%Y-%m-%d  %H-%M-%S')  # 格式化时间
        
        
        print(time.strptime(c, '%Y-%m-%d  %H-%M-%S'))  # 格式化时间>>>结构化时间
        print(time.strftime('%Y_%m_%d %H_%M_%S', b))  # 结构化时间>>>格式化时间
        
      • 3> 图示
        在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值