软件开发规范及常用内置模块

昨日内容回顾

  • 模块的本质、表现形式及分类

    模块的本质是python文件。

    常见表现形式有python文件、多个python文件组成的包、已经编译进python解释器的C或C++代码、通过解释器调用的C代码。

    分类:自定义模块、内置模块、第三方模块。

  • 模块导入的方法

    import语句特点:

    ​ 可以调用模块文件内所有的名称;

    ​ 调用时需要用模块加点的形式;

    ​ 只能调用当前执行文件所在的系统环境变量中的模块。

    from...import语句特点:

    ​ 可以调用指定文件中的指定名称;

    ​ 调用时不需要用模块名加点,名称容易混淆。

  • 绝对导入与相对导入

    绝对导入以当前项目目录为基础,依次向下查找并导入,精确度高;

    相对导入仅适用于被导入模块,以被导入模块为基准导入上层目录内模块。

  • 模块导入的注意事项

    若导入的名称过长,可以对名称起别名;

    尽量避免循环导入,如果不能避免,要保证名称被导入之前已经定义;

  • 文件类型判断及其应用

    通过查看双下name名称对应的值可判断文件是否是被执行文件,被执行文件双下name值为双下main,被调用文件双下name对应值为其文件名。该判断常用于程序的启动文件中。

今日内容概要

  • 包的使用
  • 编程思想转化
  • 软件开发规范
  • 常用内置模块

今日内容详细

包的使用

包是模块的一种,包的使用与普通模块相似,均使用import关键字导入。

使用import直接导入包实际是导入了包目录下的双下init文件,正常情况下该文件内包含了该包目录下所有的名称,可以通过包名点功能名的方式使用。

编程思想的变化

编写的程序由简单慢慢复杂起来,编写的程序变长、功能变多,为了更方便地编辑及管理程序,需要对相似的程序进行整合,不同功能的程序分开保存。

软件开发规范

软件开发规范要求对不同的功能进行分开管理,常分为以下几个部分:

  1. 启动功能文件夹(bin),主要功能文件为start.py
  2. 配置文件夹(config),主要功能文件为setting.py
  3. 核心功能文件夹(core),主要功能文件为src.py
  4. 数据库文件夹(db),主要功能文件为userinfo.txt
  5. 接口功能文件夹(interface),存放具体业务逻辑对应文件
  6. 公共功能文件夹(lib),主要文件为common.py
  7. 日志文件夹(log),主要文件为log.log
  8. 说明文件read.txt
  9. 环境要求文件requirement.txt

常用内置模块

额外数据类型模块collections

具名元组namedtuple

具名元组的基本形式为 (名称,数据值,数据值…)

使用具名元组的方式:

from collections import namedtuple
ne_tuple = namedtuple('name', ['x', 'y', 'z'])
ne_tuple(a, b, c)

'name'是对该组数据的说明,后方中括号内为参数。生成的具名元组的格式为 name(x=a, y=b, z=c)。

队列deque

队列数据操作顺序为先进先出,堆栈数据操作顺序为先进后出。

使用队列的方法:

from collections import deque
res = deque([11, 22, 33])

队列与列表使用方法类似,但是使用队列做插入数据操作更方便。

有序字典OrderDict

普通字典内数据是无序的,有序字典内数据顺序是固定的,有序字典的格式为

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

有序字典的内置方法与普通字典类似。

计数器Counter

使用计数器可快速统计给出字符串内各字符的出现次数并组织成字典返回。

时间模块time/datetime

时间的三种格式

时间戳:距1970-01-01的秒数

结构化时间:将时间拆分成零散的数据,方便计算机进行相关运算

格式化时间:以方便人类查看的格式进行展示的时间

time/datetime常用方法

time.time()  # 展示当前时间戳
time.strftime(format)  # 将当前时间转换为指定格式
time.sleep()  # 使程序在当前位置阻塞指定秒数
datetime.datetime.now()	 # 展示当前格式化时间
c = datetime.datetime(2017, 5, 23, 12, 20)  # 将给出时间转化为格式化时间
d = datetime.strptime('2017/9/30','%Y/%m/%d')  # 将给出的格式化时间转化为结构化时间
datetime.timedelta(days=3)  # 指定延迟时间

随机数模块random

random.random()  # 随机产生0到1之间的小数
random.randint(a, b)  # 随机产生a到b之间的整数
random.randrange(start, end, step)  # 随机产生从开始数字到结束数字之间等差数列中的数
random.choice(seq)  # 随机返回系列数据的任意一个数据
random.sample(seq, int)  # 随机取出系列数据中指定数量的样本,组织成列表返回
random.shuffle(seq)  # 打断指定系列数据的顺序并返回
posted @ 2022-10-19 21:20  Akazukis  阅读(195)  评论(0)    收藏  举报