7/14课上内容整理

137 阅读3分钟

绝对导入与相对导入

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

1e141f711425c5f13df04add13f8205.png

38d494f891c50986b58851922b6e498.png

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)

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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