当前位置: 首页 > news >正文

Python教程(十三):常用内置模块详解

目录

    • 专栏列表
      • 1. `os` 模块
      • 2. `sys` 模块
      • 3. `re` 模块
      • 4. `json` 模块
      • 5. `datetime` 模块
      • 6. `math` 模块
      • 7. `random` 模块
      • 8. `collections` 模块
      • 9. `itertools` 模块
      • 10. `threading` 模块
      • 11. `加密` 模块
    • 总结

专栏列表

  • Python教程(十):面向对象编程(OOP)
  • Python教程(十一):单元测试与异常捕获
  • Python教程(十二):面向对象高级编程详解
  • Python教程(十三):常用内置模块详解

在这里插入图片描述

正文开始如果觉得文章对您有帮助,请帮我三连+订阅,谢谢💖💖💖


1. os 模块

os 模块提供了丰富的方法来与操作系统进行交互,包括文件和目录操作、环境变量访问等。

示例代码:

import os# 获取当前工作目录
current_directory = os.getcwd()
print(f"当前工作目录: {current_directory}")# 改变当前工作目录
os.chdir('../class-demo')
print(f"改变后的工作目录: {os.getcwd()}")# 列出目录中的文件和文件夹
entries = os.listdir('.')
print(f"目录中的条目: {entries}")# 检查路径是否存在
path_exists = os.path.exists('../class-demo/')
print(f"路径存在: {path_exists}")# 获取文件的大小
file_size = os.path.getsize('../class-demo/demo01.py')
print(f"文件大小: {file_size} 字节")

在这里插入图片描述

2. sys 模块

sys 模块用于访问与Python解释器相关的变量和函数,如命令行参数、最大递归深度等。

示例代码:

import sys# 打印命令行参数
print(f"命令行参数: {sys.argv}")# 获取Python解释器的路径
print(f"Python解释器路径: {sys.executable}")# 设置并获取最大递归深度
sys.setrecursionlimit(1000)
print(f"最大递归深度: {sys.getrecursionlimit()}")

在这里插入图片描述

3. re 模块

re 模块提供了正则表达式的功能,用于字符串的搜索、替换、匹配等。

示例代码:

import retext = 'Hello world!'res = re.match(r"(\w|\s)+", text) 
print(res)
if res:print('成功匹配')
else:print('未匹配到')# 搜索数字
match = re.search(r'\d+', '这里有123个苹果')
print(f"搜索到的数字: {match.group()}")# 替换字符串中的单词
replaced = re.sub(r'苹果', '橙子', '我买了3个苹果')
print(f"替换后的字符串: {replaced}")# 匹配邮箱地址
emails = re.findall(r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}', '请联系example@example.com或test@example.net')
print(f"找到的邮箱地址: {emails}")

在这里插入图片描述

4. json 模块

json 模块用于处理JSON数据,包括将Python对象编码成JSON字符串,以及将JSON字符串解码成Python对象。

示例代码:

import json# JSON 编码
data = {'name': '子羽', 'age': 30, 'city': '成都'}
json_string = json.dumps(data)
print(f"JSON 编码: {json_string}")# JSON 解码
decoded_data = json.loads(json_string)
print(f"JSON 解码: {decoded_data}")

在这里插入图片描述

5. datetime 模块

datetime 模块提供了日期和时间的操作,可以创建日期和时间对象,进行日期时间的计算和格式化。

示例代码:

from datetime import datetime, timedelta, timezone# 获取当前日期和时间
now = datetime.now()
print(f"当前日期和时间: {now}")
dt = now.timestamp() # 把datetime转换为timestamp , timestamp是一个浮点数,整数位表示秒。
print(dt)print(f'当地时区:{datetime.fromtimestamp(dt)}') # 要把timestamp转换为datetime
print(f'utc时区:{datetime.fromtimestamp(dt, timezone.utc)}') # 要把timestamp转换为datetime# 增加日期
#timedelta(days=2, hours=12) # 2 天 12 小时
one_day = timedelta(days=1)
tomorrow = now + one_day
print(f"明天的日期: {tomorrow}")# 格式化日期
formatted_date = now.strftime('%Y年%m月%d日 %H时%M分%S秒')
print(f"格式化的日期: {formatted_date}")

在这里插入图片描述

6. math 模块

math 模块包含了许多数学函数,如三角函数、指数、对数、幂运算等。

示例代码:

import math# 计算平方根
sqrt = math.sqrt(16)
print(f"平方根: {sqrt}")# 幂
print(math.pow(3,3))# 计算正弦值
sin_value = math.sin(math.pi / 2)
print(f"正弦值: {sin_value}")# 计算对数
log_value = math.log(10)
print(f"对数值: {log_value}")

在这里插入图片描述

7. random 模块

random 模块用于生成随机数,进行随机选择、设置随机数生成器的种子等。

示例代码:

import random# 随机选择一个元素
item = random.choice(['apple', 'banana', 'cherry'])
print(f"随机选择的水果: {item}")print(f'{random.random() }') # 返回从区间[0.0, 1.0)随机抽取的浮点数# 随机打乱列表
list_to_shuffle = [1, 2, 3, 4, 5]
random.shuffle(list_to_shuffle)
print(f"打乱后的列表: {list_to_shuffle}")# 设置随机数生成器的种子 , 设置随机种子后,是每次运行 文件的输出结果都一样
print(f'{random.seed(0)}')
print(f'{random.random() * 1000}')
print(f'{random.random() * 1000}')

在这里插入图片描述

8. collections 模块

collections 模块提供了额外的容器类型,如namedtupledequeCounterOrderedDict等。

示例代码:

from collections import namedtuple, deque, Counter# 使用 namedtuple 创建一个命名元组
Point = namedtuple('Point', ['x', 'y'])
point = Point(1, 2)
print(f"命名元组: {point}")# 使用 deque 实现队列
queue = deque()
queue.append('right')
queue.appendleft('left')print(f"队列: {queue}")# 使用 Counter 进行计数
words = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
word_counts = Counter(words)
print(f"单词计数: {word_counts}")

在这里插入图片描述

9. itertools 模块

itertools 模块提供了构建迭代器的工具,用于创建复杂的迭代操作。

示例代码:

from itertools import product, permutations, combinations# 笛卡尔积
cartesian_product = list(product([1, 2], ['a', 'b']))
print(f"笛卡尔积: {cartesian_product}")# 排列
word_permutations = list(permutations('ABC'))
print(f"排列: {word_permutations}")# 组合
letter_combinations = list(combinations('ABCD', 2))
print(f"组合: {letter_combinations}")

在这里插入图片描述

10. threading 模块

threading 模块用于实现多线程,允许并发执行。

示例代码:

from threading import Thread# 定义线程要执行的函数
def print_numbers():for i in range(5):print(f"线程打印: {i}")# 创建线程
thread = Thread(target=print_numbers)
thread.start()  # 启动线程# 等待线程完成
#thread.join()
print("主线程继续执行")

在这里插入图片描述

11. 加密 模块

Python的hashlib提供了常见的哈希算法,如MD5,SHA1等等。
HMAC(Hash-based Message Authentication Code)算法是一种基于哈希函数的消息认证码算法 , 相当于md5(message + salt)

示例代码:

import hashlib
import hmac
md5 = hashlib.md5()
md5.update('我的密码  123456?'.encode('utf-8'))
print('md5加密结果:',md5.hexdigest())sha = hashlib.sha1()
sha.update('789456'.encode('utf-8'))
print('sha加密结果:',sha.hexdigest())# hmacmsg = b'Hello, world!'
# message = b'Hello, world!'
key = b'123'
res = hmac.new(key, msg, hashlib.md5)
print('hmac加密结果:',res.hexdigest())

在这里插入图片描述

总结

这些示例提供了每个模块的多种用法。由于Python的动态特性,这些模块可以用于更复杂的场景和应用。在实际开发中,你可以根据需要选择适合的模块和方法。

相关文章:

Python教程(十三):常用内置模块详解

目录 专栏列表1. os 模块2. sys 模块3. re 模块4. json 模块5. datetime 模块6. math 模块7. random 模块8. collections 模块9. itertools 模块10. threading 模块11. 加密 模块 总结 专栏列表 Python教程(十):面向对象编程(OOP…...

Linux 下的进程状态

文章目录 一、运行状态运行队列运行状态和运行队列 二、睡眠状态S状态D状态D状态产生的原因 三、暂停状态T状态t 状态 四、僵尸状态为什么有僵尸状态孤儿进程 一、运行状态 R状态:进程已经准备好随时被调度了。 运行队列 每个 CPU 都会维护一个自己的运行队列&am…...

【设计模式】六大基本原则

文章目录 开闭原则里氏替换原则依赖倒置原则单一职责原则接口隔离原则迪米特原则总结 开闭原则 核心就一句话:对扩展开放,对修改关闭。 针对的目标可以是语言层面的类、接口、方法,也可以是系统层面的功能、模块。当需求有变化的时候&#…...

Selenium网页的滚动

网页滚动功能实现 网页的滚动 如果需要对网页进行滑动操作,可以借助浏览器对象调用execute_script()方法来执行js语句,从而实现网页中的滚动下滑操作。 使用js语法实现网页滚动: # 根据x轴和y轴的值来定向滚动对应数值的距离 window.scrol…...

图算法系列1: 图算法的分类有哪些?(上)

大约在公元9世纪上半叶,来自中亚古国花剌子模的波斯数学家花剌子米(al-Khwarizmi)先后出版了两本对数学界有深远影响的书籍《印度数字算术》与《代数学》​,前者在12世纪被翻译为拉丁文传入欧洲,十进制也因此传入欧洲,最终所形成的…...

零样本学习——从多语言语料库数据中对未学习语言进行语音识别的创新技术

引言 在全球众多的语言中,只有极少数的语言在语音识别领域取得了显著的进展。这种不平衡现象的主要原因是,现有的语音识别模型往往依赖于大量的标注语音数据,而这些数据对于许多语言来说难以获得。 近年来,尽管语音识别技术取得…...

ViewStub的原理

**ViewStub是Android开发中的一个轻量级控件,主要用于懒加载布局以提高应用程序的性能和响应速度。**其原理和工作方式如下: 定义与特点 轻量级与不可见:ViewStub是一个不可见的、不占布局位置的轻量级View,它在初始化时不会实例…...

十一、Spring AOP

十一、Spring AOP 1. AOP概述2. Spring AOP快速⼊⻔2.1 引⼊AOP依赖2.2 编写AOP程序 3. Spring AOP 详解3.1 Spring AOP核⼼概念3.1.1 切点(Pointcut) Around 哪个包3.1.2 连接点(Join Point) 包下面的方法3.1.3 通知(Advice) 就是要执行的方法3.1.4 切⾯(Aspect) 3.2 通知类型…...

【网络】IP的路径选择——路由控制

目录 路由控制表 默认路由 主机路由 本地环回地址 路由控制表的聚合 网络分层 个人主页:东洛的克莱斯韦克-CSDN博客 路由控制表 在数据通信中,IP地址作为网络层的标识,用于指定数据包的目标位置。然而,仅有IP地址并不足以确…...

Unity动画模块 之 2D IK(反向动力学)

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​ 1.什么是IK 反向动力学 IK(Inverse Kinematics)是一种方法,可以根据某些子关节的最…...

关于kickstart自动安装脚本以及dhcp的设置

我将在rhel7.9内进行本次实验,需要安装并启动图形界面 hostnamectl查看是否有图形界面 没有的话 可以使用yum group list 查看,并安装server with GUI yum group install "server with GUI" -y安装完成后可以使用init 5启动 安装kickstart自…...

AWS云服务器选择最佳区域

2024年,随着全球云计算的持续发展和AWS在全球不断扩展的数据中心网络,选择合适的AWS云服务器区域成为了企业和开发者需要认真考虑的问题。九河云告诉你在做出选择之前,需要考虑以哪些关键因素: 地理位置和用户分布 选择AWS云服务…...

Unity Android端截图保存并获取展示

截屏保存方法 public static IEnumerator ScreenShot(string filePath, string fileName){yield return new WaitForEndOfFrame();Rect rect new Rect(0, 0, Screen.width, Screen.height);Texture2D screenShot new Texture2D(Screen.width, Screen.height, TextureFormat.R…...

linux高级编程——文件IO

linux高级编程——文件IO 标准IO:stdio.h 标准IO:stdio.h IO也就是输入input和输出output; I: 键盘是标准输入设备,默认输入就是指键盘 /dev/input; O: 显示器是标准输出设备,默认输…...

windows C++-在 C++/WinRT 中使用委托处理事件(下)

撤销已注册的委托 当你注册委托时,通常会向你返回一个令牌。 随后,可以使用该令牌撤销委托;这意味着将从事件取消注册委托,再次引发该事件时不会调用该委托。 为简单起见,上面的代码示例都没有介绍如何执行该操作。 …...

【实用工具】Stirling-PDF: 优质开源的PDF处理工具/编辑工具-含入门安装教程

文章目录 项目简介功能展示Page Operations 页面操作Conversion Operations 转换操作Security & Permissions 安全与权限Other Operations 其他业务 如何安装并使用Docker RunDocker Compose 项目简介 这是一款使用 Docker 的基于本地托管网络的强大 PDF 操作工具。它能让…...

opencv 深度图视差图可视化案例

参考:https://www.cnblogs.com/zyly/p/9373991.html(图片这里面下载的) https://blog.csdn.net/He3he3he/article/details/101053457 原理 双目摄像头 视差公式: 三角形对应推算 深度距离转换: 这里d是视差Disparity 代码 下面两种计算视差方法: import os impor…...

Golang | Leetcode Golang题解之第330题按要求补齐数组

题目&#xff1a; 题解&#xff1a; func minPatches(nums []int, n int) (patches int) {for i, x : 0, 1; x < n; {if i < len(nums) && nums[i] < x {x nums[i]i} else {x * 2patches}}return }...

算法训练(leetcode)第五十二天 | Bellman_ford 队列优化算法(SPFA)、BF算法判断负回路、BF之单源有限最短路(有负回路)

刷题记录 94. 城市间货物运输 I-Bellman_ford 队列优化算法&#xff08;SPFA&#xff09;95. 城市间货物运输 II-BF算法判断负回路96. 城市间货物运输 III-BF之单源有限最短路(有负回路) 94. 城市间货物运输 I-Bellman_ford 队列优化算法&#xff08;SPFA&#xff09; 题目地址…...

SpringBoot中整合RabbitMQ(测试+部署上线 最完整)

一、RabbitMQ安装 由于在测试环境中&#xff0c;我们现在虚拟机上基于docker安装mq docker run \-e RABBITMQ_DEFAULT_USERquick \-e RABBITMQ_DEFAULT_PASS123 \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network your-net\-d \r…...

告别环境冲突:基于快马平台与homebrew打造团队高效统一开发环境

作为一名长期与团队协作的开发者&#xff0c;我深刻体会到环境配置不一致带来的痛苦。新同事入职要花一整天配环境&#xff0c;不同项目依赖冲突导致"在我机器上能跑"的经典问题&#xff0c;甚至同一项目组因为系统更新节奏不同而出现隐性兼容问题。最近尝试用homebr…...

Go语言的gRPC服务开发

Go语言的gRPC服务开发 1. gRPC简介 gRPC是Google开发的高性能、开源的RPC框架&#xff0c;基于HTTP/2协议和Protocol Buffers序列化格式。它支持多种语言&#xff0c;包括Go、Java、C、Python等&#xff0c;非常适合构建微服务架构。 gRPC的优势 高性能&#xff1a;基于HTTP/2协…...

SpringBoot + 本地事务表 + 定时扫描补偿:轻量级方案实现最终一致性,无中间件依赖

在分布式系统中,数据一致性是一个永恒的话题。传统的分布式事务解决方案如 Seata、XA 等往往需要引入重量级中间件,增加了系统复杂度和运维成本。 本文将介绍一种轻量级的最终一致性方案——本地事务表 + 定时扫描补偿,该方案: 零中间件依赖:不需要 MQ、Seata 等外部组件…...

YOLOv11涨点改进| AAAI 2025 |自研创新首发、特征融合改进篇| 使用TAMoE任务自适应混合专家模块,多专家协同合作,各司其职,助力各种任务的目标检测,图像分割,多模态融合目标检测涨点

一、本文介绍 🔥本文给大家介绍使用 TAMoE任务自适应混合专家模块 改进YOLOv11网络模型,把原本固定的特征传递与融合方式改造成一种自适应的特征分配机制,使模型能够根据不同检测层和不同目标尺度的需求,动态选择更合适的特征组合来参与主干网络、颈部网络或检测头的融合…...

新手零门槛入门:在快马平台轻松学会为openclaw切换不同的ai模型

今天想和大家分享一个特别适合AI编程新手的实践项目——在InsCode(快马)平台上为openclaw切换不同的AI模型。作为一个刚接触AI辅助开发的小白&#xff0c;我最初看到"更换模型"这种操作时总觉得很复杂&#xff0c;但实际体验后发现这个平台把整个过程简化得像搭积木一…...

一键生成专业工资条:工资条生成器功能详解

在当今数字化办公的时代&#xff0c;一款好的工具能够让工作效率得到质的提升。 工资条生成器就是这样一款专门为财务人员打造的专业工具&#xff0c;它集成了多项实用功能。 下面&#xff0c;就让我们来详细了解一下这款软件的各项功能特性。 首先要介绍的是软件的核心功能…...

编译原理期末考后复盘:从NFA到DFA最小化,我的Hopcroft算法实战笔记

编译原理期末考后复盘&#xff1a;从NFA到DFA最小化&#xff0c;我的Hopcroft算法实战笔记 刚走出编译原理考场&#xff0c;那种既紧张又兴奋的感觉还萦绕在心头。作为计算机专业的核心课程&#xff0c;编译原理向来以理论抽象、算法复杂著称&#xff0c;而今天的期末考试恰好验…...

手柄优化与跨平台适配:DS4Windows让PS手柄在PC上焕发新生

手柄优化与跨平台适配&#xff1a;DS4Windows让PS手柄在PC上焕发新生 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 在PC游戏世界中&#xff0c;找到一款得心应手的控制器配置工具往往比…...

从学习到应用:基于快马平台部署你的第一个python实战项目——天气查询工具

最近在学习Python的过程中&#xff0c;发现了一个特别有意思的实战项目——天气查询工具。这个项目不仅涵盖了Python的基础语法&#xff0c;还涉及到了前后端交互、数据存储等实用技能。最让我惊喜的是&#xff0c;通过InsCode(快马)平台&#xff0c;我可以轻松地将这个小应用部…...

利用快马平台快速构建winner1300高性能计算原型:三步实现并行矩阵乘法

今天想和大家分享一个利用高性能计算框架winner1300快速构建并行矩阵乘法原型的实践过程。这个案例特别适合需要验证算法性能的场景&#xff0c;而借助InsCode(快马)平台的便利性&#xff0c;整个过程变得异常高效。 winner1300框架简介与环境搭建 winner1300是一个专为高性能…...