写点什么

软件测试|Python 基础之包的使用和软件开发目录规范及常用内置模块

  • 2023-09-15
    北京
  • 本文字数:2696 字

    阅读完需:约 9 分钟

包的使用

  1. 什么是包


  • 指含有多个 py 文件的集合

  • 指内部含有__ init__ .py 文件的文件的文件夹


  1. 包的具体使用


  • 常规导入如果只是想使用包中某几个模块,只需按照常规 from...import...的导入方式使用即可

  • 直接导入包名使用 import 的方式直接导入包名代码表现:import 包名这种方式导入的是包内__ init __ .py 文件,通常包的开发人员会将包内模块名导入到这个文件中去,我们只需要通过’包‘点_'_ init __'点''模块名''的方式调用

软件目录开发规范

为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要,简而言之就是把软件代码分文件目录,做到可读性强,可维护性高


  1. bin


  • bin 主要用来存放项目启动文件

  • start.py 启动文件可以存放在这个文件夹内,也可以直接存放在项目根目录下


  1. conf


  • conf 主要用来存放项目配置文件

  • settings.py 存放项目的默认配置,这里的文件一般全是大写


  1. core


  • core 主要用来存放项目的核心功能文件

  • src.py 项目核心功能文件


  1. interface


  • interface 主要用来存放项目接口类文件,根据具体业务逻辑划分文件

  • goods、user、account 等文件


  1. db


  • db 主要用来存放数据相关的文件(用户信息、用户账号)

  • userinfo、db_handler 等文件


  1. log


  • log 主要用来存放项目日志类型文件(项目运行情况)

  • log.log


  1. lib


  • lib 主要用来存放项目公共功能等文件

  • common.py


  1. readme


  • readme 主要用来存放项目的使用说明和一些介绍


  1. requirements


  • requirements 主要用来存放项目所需的模块和版本

常用内置模块

1、collections 模块


  1. 具名元组关键词:namedtuple(可迭代对象,导入的序列)作用:可生成具体名称元组


导入模块:  from collections import namedtuply
用法一:表示二位坐标 point = namedtuple('坐标', ['x', 'y']) p1 = point(1, 2) print(p1) print(p1.x) print(p1.y)------------------------------------------------------------------------------------- 坐标(x=1, y=2) 1 2 用法二:表示扑克牌 card = namedtuple('扑克牌', ['num', 'color']) c1 = card('A', '黑♠') c2 = card('A', '红♥') print(c1, c1.num, c1.color) print(c2, c2.num, c2.color) ----------------------------------------------------------------------------- 扑克牌(num='A', color='黑♠') A 黑♠ 扑克牌(num='A', color='红♥') A 红♥
复制代码


  1. 双端队列关键词:deque(可迭代对象,最大数据值)作用:可生成双向列表,返回一个新的双向队列对象,从左到右初始化(用方法 append()) ,从 iterable (迭代对象) 数据创建。如果 iterable 没有指定,新队列为空。


导入模块:  from eollections import deque
用法: q = deque(['a', 'b', 'c'], maxlen=10) # 从右边添加一个元素 q.append('d') print(q) # deque(['a', 'b', 'c', 'd'], maxlen=10)
# 从左边删除一个元素 print(q.popleft()) # a print(q) # deque(['b', 'c', 'd'], maxlen=10)
# 扩展队列 q.extend(['i', 'j']) print(q) # deque(['b', 'c', 'd', 'i', 'j'], maxlen=10)
# 查找下标 print(q.index('c')) # 1
# 移除第一个'd' q.remove('d') print(q) # deque(['b', 'c', 'i', 'j'], maxlen=10)
# 逆序 q.reverse() print(q) # deque(['j', 'i', 'c', 'b'], maxlen=10)
# 最大长度 print(q.maxlen) # 10
复制代码


  1. 默认值字典关键词:defaultdict 作用:默认字典的功能与 dict 基本相同,但在访问一个不存在的 key 时,默认字典会提供一个默认值,而不是引发异常


导入模块:from eollections import defauldict
用法一: # 使用 list 作为 default_factory ,很容易将序列作为键值对加入字典: d = defaultdict(list) s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
for k, v in s: d[k].append(v)
print(d) # defaultdict(<class 'list'>, {'yellow': [1, 3], 'blue': [2, 4], 'red': [1]}) 用法二: # 设置 default_factory 为 int ,可以很好的用于计数 s = 'mississippi' d = defaultdict(int) for k in s: d[k] += 1
print(d) # defaultdict(<class 'int'>, {'m': 1, 'i': 4, 's': 4, 'p': 2})
复制代码


  1. 计数关键词:Counter 作用:Counter 是一个 dict 的子类,用于计数可哈希对象


导入模块:  from eollections import counter
用法一:统计字符串字符个数 c = Counter() str_1 = 'sfsadfsdjklgsdla' for i in str_1: c[i] += 1
print(c) # Counter({'s': 4, 'd': 3, 'f': 2, 'a': 2, 'l': 2, 'j': 1, 'k': 1, 'g': 1})
c2 = Counter('asfjslfjsdlfjgkls') print(c2) # Counter({'s': 4, 'd': 3, 'f': 2, 'a': 2, 'l': 2, 'j': 1, 'k': 1, 'g': 1})
用法二:统计列表相同数据值个数 c = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue']) print(c) # Counter({'blue': 3, 'red': 2, 'green': 1})
复制代码


2、time 时间模块


在 python 中,有三种表现时间的结构 1、时间戳:1970 年 0 时 0 分 0 秒-到现在的秒速 2、结构化时间:计算机看的,人看不适应 3、格式化时间:主要是表示时间的年月日


  1. 时间戳关键词:time 作用:打印一个时间戳


模块导入:  import time/from time import time
print(time.time()) # 1666170099.7668478
复制代码


  1. 结构化时间关键词:localtime 作用:打印结构化时间


模块导入:  import time/from time import localtime
print(time.localtime()) # time.struct_time(tm_year=2022, tm_mon=10, tm_mday=19, tm_hour=17, tm_min=4, tm_sec=16, tm_wday=2, tm_yday=292, tm_isdst=0)
复制代码


  1. 格式化时间关键词:strftime 作用:以人能看懂的方式打印时间


模块导入:  import time/from time import strftime      print(time.strftime('%y/%m/%d'))  # 22/10/19    print(time.strftime('%y-%m-%d,%H:%M:%S'))  # 22-10-19,17:19:17    print(time.strftime('%y年%m月%d日%H时%M分%S秒')) # 22年10月19日17时19分17秒
复制代码


  1. 睡眠关键词:sleep 作用:代码执行到此处时,可以设置暂停执行的时间


模块导入:  import time/from time import sleep        time.sleep(10)    print('怎么还没到我~')  # 代码将在10秒后打印  
复制代码


  1. datetime 类


导入模块:  import datetime    print(datetime.datetime.today())  # 2022-10-19 18:22:06.371652print(datetime.datetime.now())   # 2022-10-19 18:24:13.345563print(datetime.date.today())  # 2022-10-19
复制代码


获取更多技术资料,请点击!

用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
软件测试|Python基础之包的使用和软件开发目录规范及常用内置模块_霍格沃兹测试开发学社_InfoQ写作社区