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

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

在这里插入图片描述

包的使用

  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.371652
print(datetime.datetime.now())   # 2022-10-19 18:24:13.345563
print(datetime.date.today())  # 2022-10-19
相关文章
|
2月前
|
数据采集 算法 测试技术
【硬件测试】基于FPGA的1024QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的1024QAM基带通信系统的硬件测试版本,包含testbench、高斯信道模块和误码率统计模块。系统新增ila在线数据采集和vio在线SNR设置模块,支持不同SNR条件下的性能测试。1024QAM调制将10比特映射到复平面上的1024个星座点之一,实现高效数据传输。硬件测试结果表明,在SNR=32dB和40dB时,系统表现出良好的性能。Verilog核心程序展示了各模块的连接与功能实现。
74 7
|
23天前
|
Python
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
72 14
|
1月前
|
数据采集 移动开发 算法
【硬件测试】基于FPGA的QPSK调制+软解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于FPGA实现QPSK调制与软解调系统,包含Testbench、高斯信道、误码率统计模块,并支持不同SNR设置。硬件版本新增ILA在线数据采集和VIO在线SNR设置功能,提供无水印完整代码及测试结果。通过VIO分别设置SNR为6dB和12dB,验证系统性能。配套操作视频便于用户快速上手。 理论部分详细解析QPSK调制原理及其软解调实现过程,涵盖信号采样、相位估计、判决与解调等关键步骤。软解调通过概率估计(如最大似然法)提高抗噪能力,核心公式为*d = d_hat / P(d_hat|r[n])*,需考虑噪声对信号点分布的影响。 附Verilog核心程序代码及注释,助力理解与开发。
75 5
|
2月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的MSK调制解调系统系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于FPGA实现MSK调制解调系统,采用Verilog开发,包含同步模块、高斯信道模拟、误码率统计等功能。相比仿真版本,新增ILA数据采集与VIO在线SNR设置模块。通过硬件测试验证,展示不同SNR(如10dB和16dB)下的性能表现。研究聚焦软件无线电领域,优化算法复杂度以适应硬件限制,利用MSK恒定包络、相位连续等特性提升频谱效率。核心代码实现信号生成、调制解调、滤波及误码统计,提供完整的硬件设计与分析方案。
114 19
|
3月前
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
241 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
2月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4ASK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的4ASK调制解调系统的硬件测试版本,该系统包括testbench、高斯信道模块和误码率统计模块,并新增了ILA在线数据采集和VIO在线SNR设置功能。通过VIO设置不同SNR(如15dB和25dB),实现了对系统性能的实时监测与调整。4ASK是一种通过改变载波幅度表示数据的数字调制方式,适用于多种通信场景。FPGA平台的高效性和灵活性使其成为构建高性能通信系统的理想选择。
94 17
|
2月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的16QAM调制+软解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于之前开发的16QAM调制与软解调系统,增加了硬件测试功能。该系统包含FPGA实现的16QAM调制、软解调、高斯信道、误码率统计模块,并新增了ILA在线数据采集和VIO在线SNR设置模块。通过硬件测试,验证了不同SNR条件下的系统性能。16QAM软解调通过比较接收信号采样值与16个调制点的距离,选择最近的调制点来恢复原始数据。核心Verilog代码实现了整个系统的功能,包括SNR设置、信号处理及误码率统计。硬件测试结果表明系统在不同SNR下表现良好,详细操作步骤可参考配套视频。
87 13
|
2月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4FSK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于之前的文章《基于FPGA的4FSK调制解调系统》,增加了ILA在线数据采集模块和VIO在线SNR设置模块,实现了硬件测试版本。通过VIO设置不同SNR(如10dB和20dB),并展示了ILA采集的数据结果。四频移键控(4FSK)是一种数字调制方法,利用四个不同频率传输二进制数据,具有较高的频带利用率和抗干扰性能。输入的二进制数据分为两组,每组两个比特,对应四个频率f1、f2、f3、f4,分别代表二进制组合00、01、10、11。调制过程中选择相应频率输出,并进行幅度调制以增强抗干扰能力。接收端通过带通滤波器提取信号并还原为原始二进制数据。
67 7
|
2月前
|
人工智能 自然语言处理 Shell
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
50 8
|
2月前
|
缓存 Shell 开发工具
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 &quot;hello world!&quot; 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
52 4

热门文章

最新文章