软件测试|Python基础之模块导入和使用

简介: 软件测试|Python基础之模块导入和使用

在这里插入图片描述

Python模块导入和使用

模块

1、简介

  • 本质:模块是指内部具有一定功能(代码)的py文件

2、模块的表现形式

  • 1、py文件(py文件也可以称之为是模块文件)
  • 2、含有多个py文件的文件夹(按照模块功能的不同划分不同的文件夹储存)
  • 3、已被编译为共享库或DLL的C或C++扩展
  • 4、使用C编写并链接到python解释器的内置模块

模块的分类

1、自定义模块

  • 此类模块是我们自己编写的模块文件

2、内置模块

  • python内置模块,不需要下载,只要在py文件内部调用就可使用

3、第三方模块

  • 是从网络上下载的模块,此类模块功能比较强大,是python背后的大佬进行编写,上传后供我们使用的模块

导入模块的句式

  • 1、执行文件:运行代码的主文件
  • 2、被导入文件:指存放模块的文件,需要导入在执行文件
  • 3、以后在编写代码时,py文件的名称一般是纯英文,不会含有中文或空格
  • 4、被导入的模块文件不需要填写后缀名
  1. import句式
关键词:import
导入用法:
    import 模块名
    
优点:
    1、可以一次性导入所有模块名称空间中名字
    2、需要模块名加点的方式才能调用,不易弄混
缺点:
    1、必须要模块名加点的方式才能调用,比较麻烦
 
'''
底层原理:
    1、先产生执行文件的空间名称
    2、执行被导入文件的代码,将产生的名字放入被导入文件的名称空间中
    3、在执行文件的名称空间中产生一个模块的名字
    4、在执行文件中使用该模块名加点的方式使用模块名称空间中的所有名字
'''
  1. from...import...句式
关键词:from...import...
导入用法:
    from 文件地址/文明名 import 文件名/名称空间名字
    
    
    from也可以通过*号的方式来导入所有模块内的名字
    在模块中可使用__all__的方式来限制*号导入名字,只有在__all__后方列表内的名字才能
被*号使用
     
    
'''
底层原理:
    1.先产生执行文件的名称空间
     2.执行被导入文件的代码将产生的名字放入被导入文件的名称空间中
     3.在执行文件的名称空间中产生对应的名字绑定模块名称空间中对应的名字
     4.在执行文件中直接使用名字就可以访问名称空间中对应的名字
'''

优点:
    1、可以指名道姓的调用模块中需要的名字
缺点:
    1、调用时容易弄混
  1. 补充说明
  • 起别名

    • 可以通过以上两种句式在导入模块名的后方加as修改模块名

在这里插入图片描述

  • 一次性导入多个模块

    • 可以使用逗号的方式一次性导入多个模块,在模块功能相似度不高的情况下不推荐使用

在这里插入图片描述

循环导入的问题

  1. 循环导入
  • 循环导入是指两个文件之间相互导入,并且相互使用各自名称空间中的名字
  1. 解决循环导入问题
  • 确保名字在使用前就已经准备完毕
  • 这种情况非常容易报错,在以后的使用当中,如果无特殊情况尽量避免这种情况发生

判断文件类型

    所有的py文件都可以运行 __name__ 运行后所对应的值是 __main__,但当我们运行的是导入文件时,系统则会返回给我们模块名
    
    我们在开发模块阶段,会使用模块名来测试模块的功能,如果直接使用名称调用的话,这样别人在导入模块后会直接使用模块中的名字,造成诸多不便,由此,我们可以得出,使用if设置条件来将名称作为子代码执行条件,这样模块被导入后就不会直接运行
    if __name__ == __ main__:
                 测试名称1...
               测试名称2...        
               测试名称3...
'''
应用场景:
    1、模块开发阶段
    2、项目启动文件
'''

模块查找顺序

  1. 内存

在导入模块时,python会首先在内存中查找模块名,当系统中无此模块名的时候会报错

在这里插入图片描述

  1. 内置空间

在我们导入模块时要避免模块名和内置模块名冲突的问题,若自定义模块和内置模块名冲突时,系统只会执行内置模块功能,执行自定义模块功能时,系统会报错

在这里插入图片描述

  1. 执行python所在的sys.path(系统环境)
  • 当我们导入的模块在上述空间中都没有找到时,pycharm会到py执行文件所在的sys.path中寻找,所有我们在导入模块时,需要将添加至执行文件所在的sys.path目录中

在这里插入图片描述

  • 可通过打印sys.path的方式来查看执行文件所在的地址

在这里插入图片描述

  • 可通过sys.path.append的方式来将模块文件导入到执行文件的目录中

在这里插入图片描述

绝对导入与相对导入

  1. 绝对导入
  • 绝对导入是指以执行文件所在目录为绝对路径的方式,将模块地址导入到py文件中

导入方式:

from 模块地址 import 模块名称/名称空间名字

在这里插入图片描述

  1. 相对导入

这种导入方式不是以sys.path目录为相对路径,导入的其他模块中需要导入的地址是相对于模块的位置,这种话方式可以通过点的方式简写

  • . # 表示当前目录
  • ... # 表示路径中上一层目录
  • .. \ .. # 表示上上一层目录

  • 指含有多个py文件的集合
  • 专业:内部含有__ init__.py文件的文件夹
相关文章
|
1月前
|
数据采集 算法 测试技术
【硬件测试】基于FPGA的16psk调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的16PSK调制解调系统的硬件测试版本。系统在原有仿真基础上增加了ILA在线数据采集和VIO在线SNR设置模块,支持不同信噪比下的性能测试。16PSK通过改变载波相位传输4比特信息,广泛应用于高速数据传输。硬件测试操作详见配套视频。开发板使用及移植方法也一并提供。
38 6
|
1月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
32 3
|
1月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的8PSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于FPGA实现8PSK调制解调系统,包含高斯信道、误码率统计、ILA数据采集和VIO在线SNR设置模块。通过硬件测试和Matlab仿真,展示了不同SNR下的星座图。8PSK调制通过改变载波相位传递信息,具有高频谱效率和抗干扰能力。开发板使用及程序移植方法详见配套视频和文档。
45 7
|
2月前
|
数据采集 算法 测试技术
【硬件测试】基于FPGA的QPSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的QPSK调制解调系统的硬件实现与仿真效果。系统包含测试平台(testbench)、高斯信道模块、误码率统计模块,支持不同SNR设置,并增加了ILA在线数据采集和VIO在线SNR设置功能。通过硬件测试验证了系统在不同信噪比下的性能,提供了详细的模块原理及Verilog代码示例。开发板使用说明和移植方法也一并给出,确保用户能顺利在不同平台上复现该系统。
86 15
|
2月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的2FSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的2FSK调制解调系统,包含高斯信道、误码率统计模块及testbench。系统增加了ILA在线数据采集和VIO在线SNR设置模块,支持不同SNR下的硬件测试,并提供操作视频指导。理论部分涵盖频移键控(FSK)原理,包括相位连续与不连续FSK信号的特点及功率谱密度特性。Verilog代码实现了FSK调制解调的核心功能,支持在不同开发板上移植。硬件测试结果展示了不同SNR下的性能表现。
80 6
|
2月前
|
Python
Python Internet 模块
Python Internet 模块。
133 74
|
2月前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
3月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
141 63
|
3月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
3月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。

热门文章

最新文章

推荐镜像

更多