相对导入与绝对导入
只要涉及到模块的导入,那么sys.path永远以执行文件为准
绝对导入:
其实就是以执行文件所在的sys.path一层层往下找
模块中导模块绝对导入
from aaa import modu2
ps:由于pycharm会最自动将项目目录添加到sys.path中所有查找模块肯定不报错的方法就是永久根据路劲一层层往下找
如果不是pycharm运行 则需要将项目跟目录添加到sys.path
![]()
![]()
相对导入
储备知识
.在路劲中是当前路劲
..在路劲中是上一层路劲
../..在路劲中上上一层路劲
相对导入可以不参考执行文件所在路劲 直接以当前模块文件路径为准
1.只能在模块文件中使用 不能在执行文件中使用
2.相对导入在项目比较复杂的情况下 可能会出错
ps:相对导入尽量少用,推荐使用绝对导入
包的概念
1.如何理解包
专业角度:内部包含有__init__.py文件的文件夹
直观角度:就是一个文件夹
2.包的作用
内部存放多个py文件(模块文件) 仅仅为了更加方便有效的管理模块文件
3.具体使用
import 包名
导入包名就是导入里面的__init__.py文件(该文件有什么你就才能用什么)
可以跨过__init__.py直接导入包里面的模块文件
python2中文件夹里面必须要有__init__ 才能算是包
python3中有没有__init__都无所谓了 都是包
编程思想的改变
1.基础阶段 (单文件)
基本都是都是从上往下堆叠代码
2.函数阶段 (单文件)
将代码按照功能的不同封装成不同的函数
3.模块阶段 (多文件)
根据功能的不同拆分不同的功能文件
目的为了更方便的管理资源
软件开发目录规范
针对上述三个阶段 分模块文件多了之后还需要文件夹
1.bin文件夹
储存程序的启动文件代码 start.py
2.conf文件夹
储存程序的固定信息配置文件 settings.py
3.core文件夹
储存程序的核心业务逻辑代码 src.py
4.lib文件夹
储存程序的共享功能 common.py
5.db文件夹
储存程序的数据文件 userinfo.txt
6.log文件夹
储存程序的日志文件 log.log
7.readme文件夹(文本文件)
用于程序的说明、软件使用的规范 readme.txt
8.interface文件夹
储存程序的接口文件 user.py order.py goods.py
9.requirements.txt文件
储存程序所需的第三方模块名称和版本
collections模块
import collections # 导入collections模块
1.具名元组
from collections import namedtuple
Point = namedtuple('坐标', ['x', 'y'])
res1 = Point(2, 5)
res2 = Point(10, 66)
print(res1, res2) # 坐标(x=2, y=5) 坐标(x=10, y=66)
print(res1.x) # 2
print(res1.y) # 5
2.双端队列
from collections import deque
q = deque()
q.append(11)
q.append(22)
q.append(33)
print(q) # deque([11, 22, 33])
q.appendleft(55)
print(q) # deque([55, 11, 22, 33])
3.计数器
res = 'snshsnsnshs'
from collections import Counter
res1 = Counter(res)
print(res1) # Counter({'s': 6, 'n': 3, 'h': 2})
time时间模块
import time # 导入time模块
1.时间戳
用于时间间隔的计算
从1970年1月1日0时0分0秒到现在经历的秒数
print(time.time()) # 1657795578.1154356
print(time.sleep(5)) # 睡5秒在运行
2.结构化时间
print(time.gmtime()) # UTC时间 time.struct_time(tm_year=2022, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=46, tm_sec=18, tm_wday=3, tm_yday=195, tm_isdst=0)
print(time.localtime()) # 当地时间 time.struct_time(tm_year=2022, tm_mon=7, tm_mday=14, tm_hour=18, tm_min=46, tm_sec=18, tm_wday=3, tm_yday=195, tm_isdst=0)
3.格式化时间
print(time.strftime('%Y-%m-%d %H:%M:%S')) # 2022-07-14 18:39:46
print(time.strftime('%Y-%m-%d')) # 2022-07-14
print(time.strftime('%H:%M:%S')) # 18:39:46
print(time.strftime('%Y-%m-%d %X')) # 2022-07-14 18:39:46