绝对导入与相对导入
绝对导入 aaa.bbb.ccc
- 从执行文件所在的sys.path一层层往下查找
- 找不到报错,要在sys.path下添加根目录,然后在根目录往下一层一层找
from aaa.bbb.ccc improt 模块名/名字
相对导入 . .. ../..
. 当前路径
.. 上一级路径
../.. 上上级路径
编程思想简介s
- 主要有四个阶段的转换
该阶段的时候我们写的代码时一条直线,执行是也是,如同面条一般,
并且所有代码都在一个文件里
该阶段我们已经会把代码封装为函数了,代码执行顺序不再是从上往下顺着执行了,
略微有所改变,但是代码还是都在一个文件中。
我们已经就将代码写到了多个文件里。使用时根据功能拆封为不同模块,
导入不同模块,然后由多个文件协同完成。
分类到不同的文件夹下是为了更好的管理资源
暂时还没学到
包的介绍
import 包名
- 导入包名其实就是导入了包里的__init__.py,包里有什么就能用什么,但是也可以跳过直接导入模块文件不导包
不同python环境包的差异
- 1.在python2中,含有__init__.py的文件夹才可以被当作包
- 2.在python3中,即使文件夹中没有__init__.py,也会被默认为包。
软件开发目录规范
- 在模块文件多了,开发的程序的所有的程序目录都要有规范
bin文件夹 存储文件的启动文件 start.py
conf文件夹 用于存储程序的配置文件 settings.py
lib文件夹 用于存储程序的公共能力 common.py
core文件夹 用于存储程序的和兴逻辑 src.py
db文件夹 用于存储程序的数据文件 userinfo.txt
log文件夹 用于存储程序的日志文件 log.log
interface文件夹 用于存储程序的接口文件 user.py order.py goods.py
readme 用于编写程序的说明,介绍,广告,产品说明书
requirements.txt 用于存储程序所需的第三方模块名称和版本
- 编写软件时可以不完全遵守这个文件名
- bin文件下的start.py文件也能直接放到项目的根目录
- db文件夹后期项目会被数据库软件代替
- log文件夹后续也会被专门的日志服务代替
常见内置模块
collections模块
1.具名元组 namedtuple
from collections import namedtuple
Point = namedtuple('二维坐标系', ['x', 'y'])
res1 = Point(6, 8)
res2 = Point(1, 3)
print(res1, res2)
print(res1.x)
print(res1.y)
- 输出结果:

from collections import namedtuple
Point = namedtuple('三维坐标系', ['x', 'y', 'z'])
res1 = Point(1, 2, 3)
print(res1)
print(res1.z)
- 输出结果:

from collections import namedtuple
p = namedtuple('扑克牌', ['花色', '点数'])
res1 = p('♦', 'K')
res2 = p('♣', '3')
print(res1)
print(res2)
- 输出结果:

2.双端队列 deque
from collections import deque
func = deque()
func.append(1) # 右侧添加数据值1写入列表
func.append(2)
func.append(3)
func.appendleft(4) # 左侧(开头添加数据值4)
print(func)
- 输出结果:

3.有序字典 OrderedDict
from collections import OrderedDict
func = dict([('tom', 1), ('jack', 2)])
print(func)
- 输出结果:

4.默认值字典 defaultdict
# 有集合 [1,4,7,13,16,18,24]
# 将所有大于13值保存到字典的的第一个key里,大于13的保存到第二个key里
# {'k1':[], 'k2':[]}
from collections import defaultdict
res = defaultdict(k1=[],k2=[])
print(res)
- 输出结果:

5.简单的计算器 Counter
l = '12432412314623462341345234232131425124'
from collections import Counter
l1 = Counter(l)
print(l1)
- 输出结果:与for循环相同

时间模块之time
时间的三种格式
- 1.时间戳 time.time()
- 2.结构化时间 time.gmtime()
- 3.格式化时间 time.strftime()
