首页 > 编程语言 >软件测试|Python基础之模块导入和使用

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

时间:2023-02-03 18:31:44浏览次数:59  
标签:__ 文件 Python py 导入 名称 模块 软件测试

软件测试|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修改模块名

软件测试|Python基础之模块导入和使用_名称空间_02

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

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

循环导入的问题

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

判断文件类型

所有的py文件都可以运行 __name__ 运行后所对应的值是 __main__,但当我们运行的是导入文件时,系统则会返回给我们模块名

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

模块查找顺序

  1. 内存

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

软件测试|Python基础之模块导入和使用_名称空间_04

  1. 内置空间

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

软件测试|Python基础之模块导入和使用_自定义_05

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

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

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

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

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

软件测试|Python基础之模块导入和使用_名称空间_08

绝对导入与相对导入

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

导入方式:

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

软件测试|Python基础之模块导入和使用_自定义_09

  1. 相对导入

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

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

  • 指含有多个py文件的集合
  • 专业:内部含有__ init__.py文件的文件夹


标签:__,文件,Python,py,导入,名称,模块,软件测试
From: https://blog.51cto.com/u_15640304/6036019

相关文章

  • pycharm设置python头文件模版
    钢铁知识库,一个学习python爬虫、数据分析的知识库。人生苦短,快用python。使用pycharm创建python文件时候,有时候需要自动生成想要的文件头,如何生成呢?只需要以下几步:在f......
  • python之路61 drf从入门到成神 4 反序列化类校验部分源码解析、断言、drf请求、响应格
    反序列化类校验部分源码解析#反序列化校验、什么时候开始执行校验视图类中的ser.is_valid(),就会执行校验,校验通过返回True,不通过返回False#入口:ser.is_valid......
  • python-json的自定义编码器与自定义解码器
    json的数据类型有限,在实际业务中可能会遇到数据无法使用JSON编码的问题。如果我们需要转发的数据有大量或位置不规则的json无法解析数据类型时,事先处理就变成了一件比较麻......
  • 【Azure Cache for Redis】Python Djange-Redis连接Azure Redis服务遇上(104, 'Connec
    问题描述使用Python连接AzureRedis服务,因为在代码中使用的是Djange-redis组件,所以通过如下的配置连接到AzureRedis服务:CACHES={"default":{"BACKEND":"dj......
  • Python 异步: 什么是事件循环 ?(6)
    asyncio程序的核心是事件循环。在本节中,我们将花点时间看一下asyncio事件循环。1.什么是Asyncio事件循环事件循环是用于在单个线程中执行协程的环境。事件循环是异......
  • Python---- 一闭三器
    一闭三器闭包装饰器迭代器生成器闭包保证数据安全闭包结构内层函数对外层函数的局部变量的使用,内层函数被称为闭包函数闭指的是:该函数的内部函数包......
  • 基于python的小翻译工具
    这里的翻译接口是基于百度翻译的API这里的方案是利用百度翻译开放平台实现的会稍微麻烦点,但是更加方便个性化翻译也可以通过爬虫的形式,直接操作百度翻译网页来实现前......
  • fiddler 导入 pcap 分析修复
    plink.exe-batch-ssh-pwpasswordroot@192.168.10.1"tcpdump-nibr-lan-s0-w-notport22"|"C:\ProgramFiles\Wireshark\Wireshark.exe"-k-i-sshroot@1......
  • [oeasy]python0072_修改字体前景颜色_foreground_color_font
    修改颜色回忆上次内容m可以改变字体样式0-9之间设置的都是字体效果0重置为默认1变亮2变暗3斜体4下划线5慢闪6快闪7前景背景互换8隐藏9中划......
  • python Counter
    fromcollectionsimportCounterL1='iuasdhfiuhaefi'L2=[1,2,3,4,5,6,6,6,7,7,8,8,8,11,2,1]L3={1:2,3:4,5:6}L4={1,2,23,4,5,6,76,7}print(Counter(L1))......