Python模块篇(五)
模块
- 模块与包
- 模块的导入与使用
- 标准库的常用模块
- 第三方库的安装与使用(如:pip工具)
模块与包
模块是一个包含 Python 代码的文件,通常以 .py 作为扩展名。一个模块可以包含函数、类、变量,以及可执行的代码段。模块的作用是将代码分割成逻辑上独立的部分,以便更好地组织和复用
包是一个包含多个模块的目录。包通过在目录中包含一个特殊的 init.py 文件来区分普通目录和包目录。init.py 文件可以是空的,也可以包含包的初始化代码
模块的导入与使用
在 Python 中,导入和使用模块可以通过几种不同的方式来实现
- 使用 import 语句导入整个模块
这种方式导入整个模块,然后通过模块名访问其中的函数、类或变量
# math_operations.py
def add(a, b):return a + bdef subtract(a, b):return a - b
导入并使用模块
import math_operationsresult = math_operations.add(5, 3)
print(result) # 输出:8result = math_operations.subtract(5, 3)
print(result) # 输出:2
- 使用 from … import … 导入模块中的指定部分
这种方式可以只导入模块中的某个函数、类或变量,直接使用而不需要前缀模块名
from math_operations import add, subtractresult = add(5, 3)
print(result) # 输出:8result = subtract(5, 3)
print(result) # 输出:2
- 使用 as 关键字给模块或函数起别名
如果模块名或函数名较长,可以使用 as 关键字起一个别名,以简化后续的调用
import math_operations as moresult = mo.add(5, 3)
print(result) # 输出:8from math_operations import subtract as subresult = sub(5, 3)
print(result) # 输出:2
- 导入包中的模块
当模块位于包中时,可以使用点号 (.) 来导入包中的模块
math_utils/__init__.pybasic_operations.pyadvanced_operations.py
可以导入并使用 basic_operations.py 中的函数
from math_utils.basic_operations import addresult = add(5, 3)
print(result) # 输出:8
标准库的常用模块
Python 的标准库中包含了大量预先编写好的模块,可以直接导入并使用,极大地方便了开发。以下是一些常用的标准库模块及其功能简介
- os 模块
os 模块提供了与操作系统交互的功能,比如文件和目录操作、环境变量、进程管理等。
常用功能:
- os.listdir(path):列出指定目录下的文件和子目录。
- os.mkdir(path):创建目录。
- os.remove(path):删除文件。
- os.rename(src, dst):重命名文件或目录。
- os.getenv(key):获取环境变量的值。
import oscurrent_dir = os.getcwd() # 获取当前工作目录
print(current_dir)files = os.listdir('.') # 列出当前目录下的文件和目录
print(files)
- sys 模块
sys 模块提供了与 Python 解释器相关的功能和变量,可以访问命令行参数、控制 Python 运行环境等。
常用功能:
- sys.argv:获取命令行参数列表。
- sys.exit([status]):退出程序,status 是退出状态码。
- sys.path:获取模块的搜索路径
import sysprint(sys.argv) # 输出命令行参数列表
sys.exit(0) # 正常退出程序
- datetime 模块
datetime 模块用于处理日期和时间,可以创建、操作日期和时间对象。
常用功能:
- datetime.datetime.now():获取当前日期和时间。
- datetime.date(year, month, day):创建一个日期对象。
- datetime.timedelta(days=, seconds=, …):表示时间间隔,用于时间的加减运算。
from datetime import datetime, timedeltanow = datetime.now()
print(now)yesterday = now - timedelta(days=1)
print(yesterday)
- math 模块
math 模块提供了数学函数和常数,如三角函数、对数、平方根等。
常用功能:
- math.sqrt(x):计算平方根。
- math.sin(x)、math.cos(x):计算三角函数。
- math.log(x, base):计算对数。
import mathprint(math.sqrt(16)) # 输出:4.0
print(math.sin(math.pi / 2)) # 输出:1.0
- random 模块
random 模块用于生成随机数,可以用于随机选择、打乱顺序等。
常用功能:
- random.random():生成 0 到 1 之间的随机浮点数。
- random.randint(a, b):生成 [a, b] 之间的随机整数。
- random.choice(seq):从序列中随机选择一个元素。
- random.shuffle(seq):随机打乱序列。
import randomprint(random.random()) # 输出一个随机浮点数
print(random.randint(1, 10)) # 输出 1 到 10 之间的随机整数
- re 模块
re 模块用于正则表达式操作,可以进行复杂的字符串匹配、查找、替换等。
常用功能:
- rre.match(pattern, string):从字符串开头进行正则匹配。
- rre.search(pattern, string):在字符串中搜索符合正则的内容。
- rre.findall(pattern, string):查找所有匹配的内容。
import repattern = r'\d+' # 匹配一个或多个数字
text = "There are 123 apples and 456 oranges."matches = re.findall(pattern, text)
print(matches) # 输出:['123', '456']
- json 模块
json 模块用于处理 JSON 数据,可以将 Python 对象与 JSON 数据进行相互转换。
常用功能:
- json.dumps(obj):将 Python 对象转换为 JSON 字符串。
- json.loads(json_str):将 JSON 字符串转换为 Python 对象。
- json.dump(obj, file):将 Python 对象以 JSON 格式保存到文件中。
- json.load(file):从文件中读取 JSON 数据并转换为 Python 对象。
import jsondata = {'name': 'Alice', 'age': 25}
json_str = json.dumps(data)
print(json_str) # 输出:{"name": "Alice", "age": 25}data_from_json = json.loads(json_str)
print(data_from_json) # 输出:{'name': 'Alice', 'age': 25}
第三方库的安装与使用(如:pip工具)
在 Python 中,第三方库 是由社区或开发者提供的额外功能包,可以通过包管理工具 pip 来安装和管理。这些库可以极大地扩展 Python 的功能
pip 工具简介
- pip 是 Python 官方推荐的包管理工具,用于安装、升级和卸载 Python 包。使用 pip,你可以从 * Python 包索引(PyPI)中下载和安装各种第三方库。
现在基本使用pip3,pip 和 pip3 都是用于安装和管理Python包的工具,但它们的区别主要在于它们所对应的Python版本:
pip: 通常与 Python 2.x 版本绑定。当你使用 pip 命令时,它会默认安装和管理 Python 2.x 版本的包。
pip3: 专门用于 Python 3.x 版本。当你使用 pip3 命令时,它会默认安装和管理 Python 3.x 版本的包。
- 安装第三方库
要安装一个第三方库,比如requests(一个流行的HTTP库)
pip3 install requests
在联网环境中下载库,不安装
pip3 download requests -d /path/to/save
离线安装库
pip3 install --no-index --find-links=/path/to/save requests
升级第三方库
pip3 install --upgrade requests
卸载第三方库
pip3 uninstall requests
查看已安装的库
pip3 list
查看库的详细信息
pip3 show requests
- 使用requirements文件安装库
在实际项目中,通常会使用一个requirements.txt文件来列出项目所需的所有库及其版本
pip3 install -r requirements.txt
生成requirements文件
pip3 freeze > requirements.txt
相关文章:

Python模块篇(五)
模块 模块与包模块的导入与使用标准库的常用模块第三方库的安装与使用(如:pip工具) 模块与包 模块是一个包含 Python 代码的文件,通常以 .py 作为扩展名。一个模块可以包含函数、类、变量,以及可执行的代码段。模块的…...

西安旅游系统--论文pf
TOC springboot383西安旅游系统--论文pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。在互联网诞生之前,地域位置往往是人们思想上不可跨域的鸿…...

分享一个思路,使用插桩技术解决慢查询测试问题
前段时间,我负责测试的系统在生产环境运行出现问题。该系统对于响应时间要求较高,问题发生的时候并发很高,出现大量请求超时,超时请求比例随时间推迟越来越高,最后几乎全部请求都失败。滚动重启了所有进程后࿰…...

【STM32项目】在FreeRtos背景下的实战项目的实现过程(二)
个人主页~ 实战项目的实现过程(一)~ 实战项目的实现过程 二、初步了解各个外设硬件1、OLED模块2、GPS模块3、MPU6050模块4、超声测距模块5、温度测控模块6、语音模块7、SIM模块8、按键模块 三、查阅资料1、查看手册2、查找例程 四、研究硬件功能1、OLED…...

javaer快速入门 goweb框架 gin
gin 入门 前置条件 安装环境 配置代理 # 配置 GOPROXY 环境变量,以下三选一# 1. 七牛 CDN go env -w GOPROXYhttps://goproxy.cn,direct# 2. 阿里云 go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct# 3. 官方 go env -w GOPROXYhttps://goproxy.…...

SQL - 数据类型
字符串类型 char(10),存储固定长度字符串 varchar(255),存储可变长度字符串 mediumtext,中文本,对于存储JSON对象、SCV字符串很好使 longtext,长文本,可以很好地存储教本或许多年地日志文件 tinytext&#…...

进程相关知识
进程和程序的区别 程序 程序是静态的,是存储在硬盘、SSD等存储介质中的一个文件,通常由源代码(如 .c 文件)编译生成的二进制可执行文件(如 a.out)。程序包含了指令和数据,但在未被执行时&#…...

萝卜快跑和端到端的自动驾驶(1)
先看一篇论文 2311.18636 (arxiv.org) 这篇论文里有一个非常好的图 比较了一下模块化任务(级联任务)和端到端自动驾驶的区别 首先什么叫模块化任务(级联) 如上图所示,左边的方块中的子方块,是展示了自动驾驶获取数据的途径,这里包括&…...

通信原理学习笔记
一个手机通话需要经过下面三个网络 类别接入网(Access Network)承载网(Transport Network)核心网(Core Network)定义连接终端用户与电信网络的部分。在接入网和核心网之间传输数据的网络。处理、交换和管理…...

系统编程---day4
1. 链接文件 命令行: ln -s 文件名 softlink 1.1 symlink int symlink(const char *oldpath, const char *newpath); 功能:创建一个链接向oldpath文件的新符号链接文件 参数:oldpath:被链接向的文件的路径 newpath:新符号链接文件 返回值:成功返回0,失败返回…...

01:电容的什么,各类电容的优缺点
1.电容是什么? 电容是由两块不连通的导体,已经中间的不导电材料组成 电容结构: 1.2电容的容量计算公式 C ε s d \displaystyle\frac{εs}{d} dεs 1.3常见电容的种类 1.4各类电容的特点...

Android+Jacoco+code-diff全量、增量覆盖率生成实战
背景 主要是记录下Android项目使用jacoco生成代码覆盖率的实战流程,目前已完成全量覆盖方案,仅使用jacoco就能实现; 由于我们的Android端是使用Java和kotlin语言,目前增量的方案code-diff仅针对Java代码,卡在kotlin文件的分析&am…...

乌龟对对碰在线版
爆肝两天使用vue开发了一个在线版的乌龟对对碰小游戏之幸运对对碰。没有找到合适的乌龟素材,现在使用小兔子代替。 体验地址:幸运对对碰 | 乌龟对对碰小游戏 之前的python版本的乌龟对对碰:写文章-CSDN博客 乌龟对对碰-幸运对对碰...

如何更改select option边框颜色和选中的颜色
<!doctype html> <html> <head> <meta charset"utf-8"> <title>如何更改select option边框颜色和选中的颜色</title> </head><style>ul{border: 1px solid #000000;width: 500px;height: auto;background-color: aq…...

6. 数据结构—串的匹配算法
1.BF算法(暴力算法) //模式匹配(暴力算法) int Index(SString S,SString T){int i1,j1;while(i<S.length&&j<T.length){if(S[i]T[i]){i;j;}else{ii-j2; //最开始匹配的位置的后一个j1; //从头匹配 }}if(j>T.length)return i-T.length;return return 0…...

九大服务架构性能优化方式
来源:九大服务架构性能优化方式 目录 性能优化九大方式: 缓存 使用什么样的缓存 缓存常见问题 缓存淘汰 缓存数据一致性 并行化处理 批量化处理 数据压缩合并 无锁化 顺序写 分片化 避免请求 池化 异步处理 总结 最近做了一些服务性能优…...

【RabbitMQ】 相关概念 + 工作模式
本文将介绍一些MQ中常见的概念,同时也会简单实现一下RabbitMQ的工作流程。 MQ概念 Message Queue消息队列。是用来存储消息的队列,多用于分布式系统之间的通信。 系统间调用通常有:同步通信和异步通信。MQ就是在异步通信的时候使用的。 同…...

嵌入式学习 ——(Linux高级编程——进程)
目录 一、进程的含义 二、进程和程序的区别 三、进程的作用 四、进程的状态 五、进程的调度与上下文切换 六、查询进程相关命令 七、fork()函数 八、getpid()和getppid()函数 九、面试题解析: 十、应用场合及测试 一、进程的含义 进程指正在运行的程序&a…...

C++练习备忘录
1. 保留两位小数输出格式 #include <iostream> #include <iomanip> using namespace std; int main() {double S 0;S (15 25) * 20 / 2;cout << fixed << setprecision(2) << S;return 0; }2. 设置输出宽度 #include <iostream> #inclu…...

改善工作流
快捷键管理器 打开Editor->Shortcuts查看和编辑Unity中的快捷键 示例 ShiftSpace 窗口最大化 P 选择预制体 进入预制体编辑模式 单一检视窗口 选择组件,选择Properties打开一个窗口,显示组件信息;切换对象,窗口信息不会改变…...

迭代器失效
一、什么是迭代器失效 迭代器的主要作用就是让算法能够不用关心底层数据结构,其底层实际就是一个指针,或者是对指针进行了封装,比如:vector的迭代器就是原生态指针T* 。因此迭代器失效,实际就是迭代器底层对应指针所指…...

@RequestParam @RequestBody @PathVariable 这三个注解对应的前端使用vue的http请求时不同的调用方式
1. RequestParam 用途:用于提取请求参数,常见于GET请求或表单提交。 Vue HTTP 请求示例: // 使用axios发送GET请求 axios.get(/api/users, { params: { id: 1, name: John } }); 2. RequestBody 用途:用于提取请求体…...

SQL - 索引
索引本质上是数据库引擎用来快速查找数据的数据结构,可以显著提高查询的性能,为了加快运行较慢的查询。创建索引 默认索引 create index 索引名 on 表名 (列名); 通过对列名进行创建索引,在查询的时候,数据库就能通过索引找到匹配…...

Oracle23ai新特性FOR LOOP循环控制结构增强
在Oracle数据库中,FOR LOOP是一种常用的循环控制结构,它允许你重复执行一系列语句固定次数或直到满足特定条件为止。然而,标准的Oracle PL/SQL中的FOR LOOP主要用于遍历集合(如数组或游标的结果集),而不是像…...

DHU OJ 二维数组
思路及代码 #include<iostream> using namespace std; int main(){ //input 多组 //input M,N int 1< <20 //input M 行 N 列 数据 //initialize listint M, N;while (cin >> M >> N){int list[M][N];for (int i 0; i < M-1; i){for (int j 0; j…...

UDP/TCP --- Socket编程
本篇将使用 Linux 中的系统调用来实现模拟 TCP 和 UDP 的通信过程,其中只对 UDP 和 TCP 进行了简单的介绍,本篇主要实现的是代码,至于 UDP 和 TCP 的详细讲解将会在之后的文章中给出。 本篇给出的 tcp 和 udp 的代码中的 echo 都是测试连接是…...

【C语言】最详细的单链表(两遍包会!)
🦄个人主页:小米里的大麦-CSDN博客 🎏所属专栏:C语言数据结构_小米里的大麦的博客-CSDN博客 🎁代码托管:黄灿灿/数据结构 (gitee.com) ⚙️操作环境:Visual Studio 2022 目录 一、前言 二、单链表的概念 1. 单链表的特点 2. 单链表的基本…...

QT:VS2019 CMake编译CEF
CEF介绍 CEF作为一个基于Chromium的开源Web浏览器控件,为第三方应用提供了强大的嵌入浏览器支持。其多平台支持、HTML5特性、自定义能力以及多进程架构等特性,使得CEF在浏览器开发、桌面应用、开发工具以及自动化测试等领域得到了广泛应用。 多平台支持…...

day31(8/19)——静态文件共享、playbook
目录 一、ansible模块 script模块 copy模块 使用command模块下载 nfs-utils rpcbind 在被控制的主机上添加static目录,并创建test文件 command模块 service模块 二、playbook 三、playbook编排vsftpd 1、安装 2、卸载 3、启动服务 4、修改配置文件设置不…...

白骑士的C#教学实战项目篇 4.4 游戏开发
系列目录 上一篇:白骑士的C#教学实战项目篇 4.3 Web开发 在这一部分,我们将探索如何使用 Unity 和 C# 开发游戏。游戏开发结合了编程、图形设计和创意,既充满挑战又充满乐趣。通过这一节的学习,您将了解游戏引擎的基础知识&#…...