python_绝对导入与相对导入,常见内置模块

一、绝对导入与相对导入

1.绝对导入

就是已执行文件所在的sys.path为起始路径,往下一层层的找

2.相对导入

储备知识:
. 在路径中意思是当前路径
… 在路径中意思是上一层路径
…/… 在路径中意思是上上一层路径

相对导入路径可以不参考执行文件所在路径,而是已当前模块所在路径为准

不足之处:
只能在当前模块中使用,不能在执行文件里操作
相对导入在复杂的文件里使用可能会出错

ps:推荐使用绝对导入

二、包的概念:

包就是文件中含有__init__.py文件的文件夹
包的作用
包的内部放入多个py文件是为了更加方便、便捷的管理模块文件
具体使用:
import包名
导入包名其实就是使用里面的__init__.py文件
其实也可以直接跳过__init__.py文件,而直接使用其他模块文件

三、编程思想的转变:

1.小白阶段

按照需求一层层的堆叠代码(类似面条版) 单文件

2.函数阶段

将不同的代码封装成不同的函数 单文件

3.模块阶段

将不同的功能拆封成对应的功能模块文件 多文件

小白阶段相当于将所有文件存储在一个盘中并且杂乱无章
函数阶段相当于将所有文件有序的存储在一个盘中
而模块阶段相当于将所有文件按照不同功能并有序的分到不同的盘中
*ps:这是一种进步,更加方便快捷高效的管理资源*

四、软件开发目录规范

根据上面讲到的三种情况,分类模块多了还需要用文件夹分类存储
我们使用的所有的程序目录都有一定的规范(含有多个文件夹)

序号文件夹名称功能文件名
1bin文件夹用于存储程序的启动文件start.py
2core文件夹用于存储程序的核心逻辑scr.py
3conf文件夹用于存储程序的配置工作settings.py
4lib文件夹用于存储程序的公共功能common.py
5db文件夹用于存储程序的数据文件userinfo.txt
6log文件夹用于存储程序的日志文件log.log
7interface文件夹用于存储程序的接口文件start.py
8用于编写程序说明、介绍、广告,类似于产品说明书readme.txt
9用于存储程序所需的第三方模块名称和版本requirement.txt

ps:以上文件名仅供参考,可以不完全遵循
在这里插入图片描述

五、常见内置模块

1.collections模块

给我们提供了更多数据类型!!!

from collections import namedtuple

Point = namedtuple('二维坐标系', ['x', 'y'])
res1 = Point(4, 8)
res2 = Point(14, 6)
print(res1, res2)  #二维坐标系(x=4, y=8) 二维坐标系(x=14, y=6)
print(res1.x)  #4
print(res1.y)  #8

Point = namedtuple('三维坐标系', ['x', 'y', 'z'])
res1 = Point(4, 8, 16)
res2 = Point(14, 6, 20)
print(res1, res2)  #三维坐标系(x=4, y=8, z=16) 三维坐标系(x=14, y=6, z=20)

p = namedtuple(('扑克牌'), ['花色', '点数'])
res1 = p('♥', 'Q')
res2 = p('♠', 'K')
print(res1, res2)  #扑克牌(花色='♥', 点数='Q') 扑克牌(花色='♠', 点数='K')

双端队列

from collections import deque

q = deque(['2a','3b','5c'])
q.append('6i')
q.append('1o')
q.appendleft('0D')
print(q)   #deque(['0D', '2a', '3b', '5c', '6i', '1o'])

from collections import OrderedDict
d = dict([('a', 1), ('b', 2), ('c', 3)])
d # dict的Key是无序的
{'a': 1, 'c': 3, 'b': 2}
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
od # OrderedDict的Key是有序的
OrderedDict([('a', 1), ('b', 2), ('c', 3)])

有如下值集合 [11,22,33,44,55,66,77,88,99,90],
将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中

{'k1':[], 'k2':[]}

from collections import defaultdict
res = defaultdict(k1=[],k2=[])
print(res)
res = 'abcdeabcdabcaba'  # {'a':2,'b':5 }
# new_dict = {}
# for i in res:
#     if i not in new_dict:
#         new_dict[i] = 1
#     else:
#         new_dict[i] += 1
# print(new_dict)
from collections import Counter
res1 = Counter(res)
print(res1)

2.时间模块之time模块

时间的三种格式
	1.时间戳		time.time()
	2.结构化时间	  time.gmtime()
	3.格式化时间	  time.strftime()
import time
print(time.time()) #1657807247.4397857
print(time.gmtime())  #time.struct_time(tm_year=2022, tm_mon=7, tm_mday=14, tm_hour=13, tm_min=55, tm_sec=46, tm_wday=3, tm_yday=195, tm_isdst=0)
print('时间:',time.strftime('%Y-%m-%d %X'))  #时间: 2022-07-14 22:08:55
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值