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打开一个窗口,显示组件信息;切换对象,窗口信息不会改变…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...