知识梳理
目录
-
绝对导入和相对导入
- 绝对导入
- 相对导入
-
包的概念
- 对于包的理解
- 包的作用
- 具体使用
-
编程思想的转变
- 编程思想转变的阶段
- 各个阶段的意义
-
软件开发的目录规范
-
常见的内置模块
- collections模块
- 时间模块——time 模块
-
回顾小知识
- python2 与python3 之间的不同之处
绝对导入和相对导入
只要涉及到模块的导入, sys.path 永远以执行文件为准
-
绝对导入
以执行文件所在的sys.path为起始路径 往下一层层查找
from adc import b from adc.ap.ad import b """ 由于pycharm会自动将项目根目录添加到sys.path中所以查找模块肯定不报错的方法就是永远从根路径往下一层层找 如果不是用pycharm运行 则需要将项目跟目录添加到sys.path """ 实例:
当模块和执行文件在同一路径下

当模块与执行文件在不同的路径下的情况,第一种是将模块的包名使用sys.path 的方式添加到路径中
第二种就是用 from ... impor ... 的形式直接导入

-
相对导入
相对导入可以不参考执行文件所在的路径 直接以当前模块文件路径为准
-
只能在模块中使用, 不能执行文件中使用
-
相对导入在项目中比较复杂的情况下容易出错

储备知识:
符号 意思 . 在路径中意思是当前路径 .. 在路径中意思是上一层路径 ../.. 在路径中意思是上上一层路径 -
包的概念
-
如何理解包
角度 看法 在专业的角度 内部含有__ init __.py的文件夹 大众角度 就是一个文件夹 -
包的作用
内部存放多个py文件(模块文件) 仅仅是为了更加方便的管理模块文件
-
具体使用
import 包名
导入包名其实导入的是里面的__ init __ .py文件(该文件里面有什么你才能用什么)
其实也可以通过__ init __.py直接导入包里面的模块文件
编程思想的转变
编程思想分为三个阶段
| 阶段 | 功能 | 类型 |
|---|---|---|
| 小白阶段 | 按照需求从上往下堆叠代码 | 单文件 |
| 函数阶段 | 将代码按照功能的不同封装成不同的函数 | 单文件 |
| 模块阶段 | 根据功能的不同拆分不同的模块文件 | 多文件 |
阶段的逐渐提高,其目的为了更加方便快捷高效的管理资源
软件开发的目录规范
分模块的文件多了之后,需要文件夹来进行管理。进而产生了目录规范
-
目录的规范
文件名 功能 用法 bin文件夹 用于存储程序的启动文件 start.py conf 文件夹 用于存储程序的配置文件 settings. py core文件夹 用于存储程序的核心逻辑 src.py lib文件夹 用于存储程序的公共功能 common.py db文件夹 用于存储程序的数据文件 userinfo.py log文件夹 用于存储程序的日志文件 log.log
interface文件
用于存储程序的接口文件user.py
order.py
goods.pyreadme文件(文本文件) 用于编写程序的说明、介绍、广告等类似于产品说明书 requirements.txt文件 用于存储程序所需的第三方模块名称和版本 注:start.py可以放在bin文件夹下也可以直接放在项目根目录
db文件夹会被数据库软件替代(如MySQL数据库)
log文件夹被专门的日志服务替代
常见的内置模块
-
collection 模块
常用的方法 作用 namedtuple 具名元组 ,在创建时会带入一些信息 deque 双端队列,可在两端追加或删除数据 OrderedDict 有序字典 defaulitdict 带有默认值的字典 Counter 计数器,主要用来计数 -
namedtuple 具名元组 ,在创建时会带入一些信息
import collections # collections 是一个包 point = collections.namedtuple('二维坐标系', ['x', 'y']) res1 = point(1, 5) res2 = point(55, 66) print(res1, res2) # 二维坐标系(x=1, y=5) 二维坐标系(x=55, y=66) print(res1.x) namedtuple 具名元组 在创建时会带入一些信息,
并且可以单独取值,想获取数据值时,直接通过 . 的形式直接取值
可将['x', 'y'] 换成 'x y z' 换成三维坐标系
-
deque 双端队列 其本身就是一个天然的队列
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈
from collections import deque # 本身就是一个天然的队列 a = deque() a.append(111) a.append(123) a.append(321) # 使用 appendleft 是在左侧添加 a.appendleft(789) print(a) deque除了实现list的
append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素。
-
OrderedDict 有序字典
字典是无序的字典,当调用此方法就是有序字典
有序字典的K键, 会按照插入的顺序排列,不是Key本身排序
from collections import OrderedDict d = dict([('username', 'jack'), ('age', 18), ('gender','man')]) print(d) # {'username': 'jack', 'age': 18, 'gender': 'man'} """字典的顺序是无序的,只是在PyCharm中,得到了优化才显得有序""" d1 = OrderedDict([('username', 'jack'), ('age', 18), ('gender','man')]) print(d1) # OrderedDict([('username', 'jack'), ('age', 18), ('gender', 'man')]) """OrderedDict的Key是有序的"""
OrderedDict中的K键会按照插入的顺序排列,不是Key本身排序
-
defayltdict 带有默认值的字典
有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
原字典解决方式: l1 = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90] a = {'>66':[],'<=66':[]} for i,j in enumerate(l1,0): if int(j) > 66: a['>66'].append(j) else: a['<=66'].append(j) print(a) defaultdict 解决方式 from collections import defaultdict res = defaultdict( k1=[], k2=[]) for i,j in enumerate(l1,0): if int(j) > 66: res['k1'].append(j) else: res['k2'].append(j) print(res)实现:

带默认值字典只是将原来的字典形式直接让其创建列表。
-
Counter 计数器,主要用来计数
Counter 计数器的目的就是用来跟踪出现的次数。是一个无序的容器类型,以字典的键值对形式存储。
其中,元素为字典的K键,计数值为V值。计数值可以是任意的Interger(包括0和负数)
1. 原计数方式 res = 'adwswwadsdwadaasws' new_dict = {} for i in res: if i not in new_dict: new_dict[i] = 1 else: new_dict[i] += 1 print(new_dict) 2. 用Counter方法 from collections import Counter res1 = Counter(res) print(res1)实现:

-
-
时间模块——time模块
- 时间的三种格式
格式 用法 时间戳 time.time() 结构化时间 time.gmtime() 格式化时间 time.strftime() - python中时间日期格式化符号
形式 所表达的意义 %y 两位数的年份 %Y 四位数的年份 %m 月份 %d 月内的一天 %H 24小时的小时数 %I 12小时的小时数 %M 分钟数 %S 秒数 %a 本地简化星期的名称 %A 本地完整的星期名称 %b 本地简化的月份 %D 本地完整的月份 %c 本地相应的日期表示和时间表示 %j 年内的一天 %p 本地A.M.或P.M.的等价符 %U 一年内的星期数, 星期天为星期的开始 %w 星期(0-6)星期天为星期的开始 %W 一年内的星期数,星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当地的时区名称 %% %号本身 -
三种格式之间的转换

回顾小知识
-
python2 和python 3 的不同之处
类型 python2 python3 输入 raw_input()获取用户的输入
input()会把用户的输入的内容当代码执行python3 中没有raw_input()函数,只有input()
python3中的input与python2中的raw_input()功能一样输出 可以使用空格或者小括号 python3中输出只能为小括号
解释器默认的编码是ASCII码
1.文件头 coding:utf8
2.定义字符串 需要在字符串的前面加u
默认的编码是utf8码包 文件夹下面必须要有__ init__.py才能被当做包 文件夹中不管有没有__ init__.py都是包

浙公网安备 33010602011771号