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

news2024/9/23 3:33:10

目录

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

专栏列表

  • 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 re

text = '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("主线程继续执行")

在这里插入图片描述

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp h5本地预览pdf教程 (含白屏|跨域解决方案)

第一步 下载pdf.js 很多pdf.js版本在真机ios环境都会白屏 经测试后2.5.207版本比较稳定,Android和IOS环境PDF文件都能加载成功 下载地址 https://github.com/mozilla/pdf.js/releases/tag/v2.5.207https://github.com/mozilla/pdf.js/releases/tag/v2.5.207第二步 解…

leetcode50. Pow(x, n),快速幂算法

leetcode50. Pow(x, n),快速幂算法 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000 示例 2: 输入&#xff…

贵阳高新区:加强数字人才培育 引领数字经济未来

在近期举行的贵阳高新区(贵州科学城)2024年科技创新与成果交流夏季活动中,来自清华大学2022级大数据(贵州)全日制工程硕士专业的学生们展示了他们在城市公交数据挖掘、通勤线路优化、场景数据的稳定训练以及营运车辆风…

数据分析:多诊断指标ROC分析

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 介绍 pROC::roc函数能够使用一个指标(predictor)去区分两个或多个分组(response),并计算95%置信区间的原理基于以下几个关键点: ROC曲线:ROC曲线是一种图形表示,用于展示分类模型在所有…

【轨物洞见】从电磁感应现象的发现和应用理解科学、技术、工程的关系

电磁感应现象是19世纪以来人类最伟大的发现。有了这个发现,才有后来电和无线电这两大改变人类命运的技术,第二次、第三次工业革命才会发生,人类财富才会猛增、我们的生活才会越来越美好。 让我们来回顾一下电磁感应现象的发现和应用&#xff…

《系统架构设计师教程(第2版)》第13章-层次式架构设计理论与实践-05-数据架构规划与设计

文章目录 1 数据库设计与类的设计融合2. 数据库设计与XML设计融合 教材本节实在太敷衍了,没什么有用的内容 1 数据库设计与类的设计融合 不存在唯一正确的数据模型,然而却存在好的数据模型好模型的目标 将工程项目整个生存期内的花费减至最小 而不是单纯…

KL 散度(python+nlp)

python demo KL 散度(Kullback-Leibler divergence),也称为相对熵,是衡量两个概率分布之间差异的一种方式。KL 散度是非对称的,也就是说,P 相对于 Q 的 KL 散度通常不等于 Q 相对于 P 的 KL 散度。 一个简…

zabbix7.0TLS-05-快速入门-触发器

文章目录 1 概述2 查看触发器3 添加触发器4 验证触发器5 查看问题6 问题恢复 1 概述 监控项用于收集数据,但是我们并不能时刻观测每个监控项的数据,看看哪个监控项的数据超过了正常可接受的数值或状态,比如 CPU 负载高于 90%、磁盘使用率低于…

不平衡数据:Handling Imbalanced Dataset with SMOTE导致ValueError ⚖️

不平衡数据:Handling Imbalanced Dataset with SMOTE导致ValueError ⚖️📈 不平衡数据:Handling Imbalanced Dataset with SMOTE导致ValueError ⚖️📈摘要引言详细介绍什么是不平衡数据集?⚖️SMOTE简介&#x1f4c8…

加密案例分享:电子设备制造行业

企业核心诉求选择 1.某企业规模庞大,分支众多,数据安全管理方面极为复杂; 2.企业结构复杂,包括研发、销售、财务、总部、分部、办事处、销售等单位连结成为一个庞大的企业组织,数据产生、存储、流转、使用、销毁变化…

Selenium + Python 自动化测试08(截图)

我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。 上一篇我们讨论了滑块的操作方法,本篇文章我们讲述一下截图的操作方法。希望能够帮到爱学的小伙伴。 在实际的测试项目组中我们经常要截屏保存报错信息&#xff0c…

做个一套C#面试题

1.int long float double 分别是几个字节 左到右范围从小到大:byte->short->int->long->float->double 各自所占字节大小:1字节、2字节、4字节、8字节、4字节、8字节 2.System.Object四个公共方法的申明 namespace System {//// 摘要…

C#如何解决引用类型的“深度”克隆问题

前言 在C#中我们new一个引用类型的对象称为对象1,如果我们再次new一个引用类型的对象称为对象2,如果直接将第一个对象直接赋值给第二个对象,然后如果我们这时候改变对象2的值,你会发现对象1的值也会被更改,这就是引用…

在ubuntu系统上安装nginx以及php的部署

1、安装依赖包 apt-get install gcc apt-get install libpcre3 libpcre3-dev apt-get install zlib1g zlib1g-dev sudo apt-get install openssl sudo apt-get install libssl-dev 2、到nginx官方下载 官方地址:nginx: download 图中下载的nginx1.22版本&#…

Python | Leetcode Python题解之第322题重新安排行程

题目: 题解: class Solution:def findItinerary(self, tickets: List[List[str]]) -> List[str]:def dfs(curr: str):while vec[curr]:tmp heapq.heappop(vec[curr])dfs(tmp)stack.append(curr)vec collections.defaultdict(list)for depart, arri…

element-ui周选择器,如何获取年、周、起止日期?

说明 版本:vue2、element-ui2.15.14 element-ui的日期选择器可以设为周,即typeweek,官方示例如下: 如果你什么都不操作,那么获取的周的值为: value1: Tue Aug 06 2024 00:00:00 GMT0800 (中国标准时间)如…

分布式存储ceph知识点整理

一、Ceph概述 如何选择存储 底层协议兼容性产品要有定位,功能有所取舍针对特定市场的应用存储被市场认可的存储系统 稳定性是第一位的性能第二数据功能要够用 一)存储分类 1、本地存储 本地的文件系统,不能在网络上用。 如:ext3、…

WPF学习(11)-ToolTip控件(提示工具)+Popup弹出窗口

ToolTip控件 ToolTip控件继承于ContentControl,它不能有逻辑或视觉父级,意思是说它不能以控件的形式实例化,它必须依附于某个控件。因为它的功能被设计成提示信息,当鼠标移动到某个控件上方时,悬停一会儿,…

【React】实现输入框切换

需求 类似designable-antd平台的这个切换功能: 点击右边按钮,可以切换不同的输入框样式。 实现 维护一个type-component的类型数组遍历数组,找到当前组件类型并渲染当切换输入框样式的时候,获取下一个组件类型并渲染。如果为最…

UE5——如何在UI界面中显示鼠标并可以点击按钮

首先进入UI蓝图的图标界面,在Event Construct节点 后连接一个Set Input Model UI Only去设置用户的输入模式 同时使用Get Player Controller获取玩家控制器并连接到Set Input Model UI Only的Player Controller 连接好后是这个样子。 此时整个UI界面只能获取到鼠标的…