绝对导入与相对导入
绝对导入:就是以执行文件所在的sys.path为起始路径往下一层层查找。
在我们的Pycharm中会自动将项目根目录添加到sys.path中,所以在查找模块的时候不会报错的方法发就是一层层的从根路径往下找。
如果不是使用pycharm运行 则需要将项目跟目录添加到sys.path,针对项目根目录的绝对路径有模块可以帮助获取
from ccc import b
from ccc.bbb.eee import b
相对导入:相对导入可以不参考执行文件所在的路径 直接以当前模块文件路径为准


1 只能在模块文件中使用 不能在执行文件中使用
2 相对导入在项目复杂的情况下可能会出错
. 在路径中意思时当前路径
.. 在路径中意识时上一层路径
../..在路径中表示上上一层路径
包的概念
在专业的角度理解为内部含有__init__.py的文件夹;最直观的角度就是一个文件夹
包的作用就是内部存有多个py文件 仅仅是为了更加方便的管理模块文件
具体使用
import 包名
就是将包里面的文件导入 里面有什么就用什么 没有就什么都用不了
其实也是可以直接跨过__init__.py直接导入包里面的模块文件
软件开发目录规范
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 interface文件夹 用于存储程序的接口文件 user.py ...
8 readme文件(文本文件) 用于编写程序的说明 介绍 广告
9 requirments.txt文件 用于存储所需第三方模块名称和版本
在编写软件的时候可以不完全遵循上面的文件名
start.py可以放在bin文件夹下也可以直接放在项目的根目录
db文件夹等后续会被数据库软件替代
log文件夹等后续会被专门的日志服务替代
常见内置模块
* collections模块提供了很多的数据类型
from collections import namedtuple
point=namedtuple('二维坐标系',['x','y'])
res1=point(3,3)
res2=point(6,6)
print(res1,res2)
print(res1.x)
print(res2.y)+
point=namedtuple('三位坐标系',['x y z'])
res3=point(7 8 9)
res4=point(11 22 33)
porint(res3,res4)

p=namedtuple('扑克牌',['花色',’点数‘])
res1=p('♥',’A‘)
RES2=P('♠',’A‘)
print(res1)
peint(res2)

双端队列
from collections import deque
q=deque()
q.append(123)
q.append(321)
q.append(213)
q.append(231)
q.appendleft(999)
print(q)

from collections import OrderedDict
d=dict([('a',1),('b',2),('c',3)])
print(d)
od = OrderedDict([('a',1),('b',2),('c',3)])
print(od)

res = 'abcdeabcdabcaba'
from collections import Counter
res1=Counter(res)
print(res1)

时间模块time的三种格式
时间戳 print(time.time())从1970年到目前的时间秒数 从1970年到目前的时间秒数
结构化时间 print(time.gmttime())获取标准时间
格式化时间 print(time.strftime(’%Y-%m-%d %H:%M:%S’))获取当地时间