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的动态特性,这些模块可以用于更复杂的场景和应用。在实际开发中,你可以根据需要选择适合的模块和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/399682.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】什么是索引?了解索引的底层原理

索引的概念 索引是一种用于提高数据库查询效率的数据结构。它类似于书籍的目录,通过快速定位数据的方式,减少了数据检索的时间。索引在数据库表中可以被看作是一个指向数据的指针,它们存储了列的值及其对应行的位置,从而使得数据…

Java面试八股之消息队列有哪些协议?各种协议有哪些具体实现

消息队列有哪些协议?各种协议有哪些具体实现 消息队列协议是指在消息队列系统中,用于消息的发送、接收和管理的一套通信规则。不同的协议有着不同的特性和应用场景,以下是一些常见的消息队列协议及其具体实现: AMQP (Advanced M…

某通用系统0day审计过程

前言 代码审计篇章都是自己跟几个师傅们一起审计的1day或者0day(当然都是小公司较为简单),禁止未经允许进行转载,发布到博客的用意主要是想跟师傅们能够交流下审计的思路,毕竟审计的思路也是有说法的,或者是相互源码共享也OK&…

mfc140.dll丢失如何修复,一步步教你如何解决mfc140.dll丢失,让电脑快速恢复正常状态!

mfc140.dll是 Microsoft Foundation Class (MFC) Library 的一部分,它是一个用于开发 Windows 应用程序的 C 库。当系统报告mfc140.dll丢失时,通常意味着某个应用程序需要这个 DLL 文件来运行,但系统中没有找到它。那么mfc140.dll丢失如何修复…

jetson nano远程调试说明

Jetson nano官方演示不仅需要网线、显示屏、Jetson nano开发板、HDMI线、5V的电源适配器,还需要USB键盘和USB鼠标,携带不方便。这里简单整理下可以不用使用USB键盘、USB鼠标和网线也可以演示。 硬件准备 一块 Jetson Nano ALT 开发板;一个 5…

WordPress原创插件:Download-block-plugin下载按钮图标美化

WordPress原创插件:Download-block-plugin下载按钮图标美化 https://download.csdn.net/download/huayula/89632743

Apache Tomcat服务器版本号隐藏

渗透测试时发现有一台服务器的404报错页面中,有Apache Tomcat的版本号信息显示,发生了信息泄露,可能导致服务器被攻击。如下所示: 解决步骤如下: 1. 隐藏HTTP响应头中的Server信息 Tomcat默认会在HTTP响应头中包含S…

最后一公里!观测云如何重塑北欧城市交通

在北欧地区,共享滑板车已经超越了简单的交通工具,它不仅成为了解决最后一公里出行的首选,更象征着一种全新城市生活方式的兴起。这种生活方式不仅体现了北欧地区对环保、便捷和创新的不懈追求,也彰显了其对提高生活质量的持续努力…

IDEA:Dangling Javadoc comment

JetBrains对JavaDocs的描述: Javadoc comments are usually placed above classes, methods, or fields in your source code. A Javadoc provides a description of the code element located under it and contains block tags marked with with specific metada…

haproxy 7000字配图超详细教程 从小白到入门

简介:HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。HAProxy的社区非常活跃,版本更新快速,HAProxy具备媲美商用负载均衡器的性能和稳…

LVS中NAT模式和DR模式实战讲解

1DR模式 DR:Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行 转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源 IP/PORT&#xf…

开源工具提升你的生产力

如果你想摆脱大科技公司的专有控制,有一些选择是很好的。 每一个阴都有一个阳;每一个动作都有一个反作用力;每一个专有软件都有一个开源替代品。大概就是这样的。 在过去的几年里,技术中的“开放性”问题在公众意识中从未如此突出…

【网络编程】字节序,IP地址、点分十进制、TCP与UDP的异同

记录学习,思维导图绘制 目录 1、字节序​编辑 2、IP地址 3、点分十进制 4、TCP与UDP的异同 1、字节序 2、IP地址 3、点分十进制 4、TCP与UDP的异同

鸿蒙(API 12 Beta3版)【播控特性简介】分布式媒体会话

使用媒体播控,可以简单高效地将音视频投放到其他HarmonyOS设备上播放,如在手机上播放的音视频,可以投到2in1设备上继续播放。 HarmonyOS提供了统一的应用内音视频投播功能设计,通过使用系统提供的投播组件和接口,应用…

嵌入式学习---DAY24:进程--二

一、exec函数族----启动一个新程序 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支), 子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的 用户空间代码和数据完全被…

什么是 Java?

探索 Java,一种多功能且功能强大的编程语言。释放其构建强大应用程序的潜力。 前言 简单来说,Java 是一种用于开发软件应用程序的面向对象设计的编程语言。截至 2019 年,它是世界上最受欢迎的编程语言,尤其是因为它是开源的&#…

QT 布局管理器之QHBoxLayout

文章目录 概述.ui来看看Cmain.cpp运行 小结 概述 QHBoxLayout,在QT中是一个布局文件,而且相对来说还是比较简单的。接下来看下。 .ui 先看下在qt design中是如何用的,如下图: 就是这个布局文件,是一个xml的文件&am…

动起来!Axure动画的实用技巧

前言 在数字产品的世界中,用户体验的每一个细节都至关重要。 动画,作为一种增强交互性和视觉吸引力的手段,已经成为现代界面设计中不可或缺的元素。 Axure,作为一款强大的原型设计工具,提供了丰富的动画功能&#x…

Windows下编译安装PETSc

本文记录在Windows下使用MinGW-w64编译安装PETSc的流程。 0、环境 操作系统Windows 11MSYS2msys2-x86_64-20240507 1、开发环境 首先,下载并安装MSYS2,然后编辑PATH环境变量,添加mingw64相关路径:C:\msys64\mingw64\bin。 然后…

【项目分享】使用python的ttkbootstrap模块构建一个炫酷的计时器

目录 前言 项目背景 项目展示(图片) 项目实现 1. 安装与设置 2. 创建主窗口 3. 初始化计时器功能 4. 实现计时功能 5. 实现隐藏边框与置顶功能 6. 运行应用 完整代码 结论 🌟 嗨,我是命运之光! &#x1f…