软件测试/测试开发丨Python 模块与包 学习笔记

2024-01-01 20:59:36

python的程序结构

组成:

  • package
  • module
  • function

    image

模块

  • 模块是在代码量变得相当?了之后,为了将需要重复使?的有组织的代码放在?起,这部分代码可以被其他程序引?,从?使?该模块?的函数等功能,引?的过程叫做导?(import)

  • 在python中,?个?件(以“.py”为后缀名的?件)就叫做?个模块

  • 导?模块的写法:

    • ?法?:import modul1[,module2…[,moduleN]]
    • ?法?:from module import <name[,name2,….[,nameN]]>

模块分类

  • 系统内置模块

    • sys、time、json模块等等;
  • 第三?的开源模块

    • 通过pip install进?安装,有开源的代码
  • ?定义模块

    • ??写的模块,对某段逻辑或某些函数进?封装后供其他函数调?。

如何使?模块

  1. 系统内置模块
  • Python安装好之后?带的?些?常有?的模块 (sys,os,time,json模块等)
 import sys
 print("调?了sys模块")
 for i in sys.argv:
 print(i)
  • 注意点1:使?关键词“import + 模块名称” 导?某?个模块
  • 注意点2:同?个模块不管你执?了多少次“import”,只会被导??次
  • 注意点3:import 应该被放在代码的顶端
  1. 第三?开源模块
  • 是通过包管理?具pip完成的。必须先知道该库的名称,可以在官?或者pypi
    上搜索,?如MySQL驱动程序,Web框架Flask,科学计算Numpy等
  • NumPy(Numerical Python) 是 Python 语?的?个扩展程序库,?持?量的维
    度数组与矩阵运算,此外也针对数组运算提供?量的数学函数库
  • pip install numpy
  1. ?定义模块
  • ?定义模块是??写的模块,对某段逻辑或某些函数进?封装后供其他函数调?。

  • 模块由变量,函数,或类组成

    • 举例:

      • 创建?个模块 baidu.py
      • 创建?个调?模块 index.py
  • 注意:?定义模块的名字?定不能和系统内置的模块重名,否则将不能再导?系统的内置模块。

  • 例如,?定义了?个sys.py模块后,那系统的sys模块就不能使?

导?模块

  • import 模块名 引??个完整的模块

  • from <模块名> import <?法 | 变量 | 类> 引?模块中的?个或多个指定部分

  • from <模块名> import * 导?模块??的所有的函数,变量

  • 区别:

    • import 导?模块,每次使?模块中的函数,都要确定是哪个模块
    • from…import * 导?模块,每次使?模块中的函数,直接使?函数就可以了(因为已经知道该函数是那个模块中的了)

作?域

搜索路径
当你导??个模块,Python 解析器对模块位置的搜索顺序是:

  1. 当前?录
  2. 如果不在当前?录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个?录
  3. 如果都找不到,Python会察看默认路径。UNIX下,默认路径?般为/usr/local/lib/python/

模块搜索路径存储在 system 模块的 sys.path 变量中。变量?包含当前?录,PYTHONPATH和由安装过程决定的默认?录。

import sys
print(sys.path)

使?模块总结

使?模块的好处

  • 提?代码的可维护性
  • ?个模块编写完毕之后,其他模块直接调?,不?再从零开始写代码了,节约了?作时间;
  • 避免函数名称和变量名称重复,在不同的模块中可以存在相同名字的函数名和变量名(不要和系统内置的模块名称重复)

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

文章来源:https://blog.csdn.net/2301_78843735/article/details/135297328
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。