Python自学 - 标准库介绍

news2025/1/16 5:41:01

<< 返回目录

1 Python自学 - 标准库介绍

  标准库是安装Python时自带的一些模块集合,集成了丰富的功能,避免用户反复造轮子,这极大的提高了生产效率!

1.1 几种常用的标准库

1.1.1 os 模块

  提供了与操作系统交互的接口,可用于处理文件和目录操作、环境变量操作、进程管理等。
  查看os模块下有哪些对象,可以使用print(dir(os))语句。

  • 示例1:os模块使用举例
import os

# 获取当前工作目录
print(os.getcwd())  

# 列出目录中的文件和目录
print(os.listdir('.'))  

# 创建目录
try:
    os.mkdir('new_directory')  
except Exception as e:
    print(f'出现错误:{e}')

# 检查文件或目录是否存在
print(os.path.exists('file.txt'))  

# 拼接路径
path = os.path.join(os.getcwd(), 'new_file.txt')
print(path)

输出:

D:\TYYSOFT\Study\Python
['20250114_101152.py', '20250115_084302.py', 'class_human.py', 'get_max_member.py', 'human_plus.py', 'module1.py', 'module_test_1.py', 'new_directory', 'print_hello.py', 'scan_file.py', 'selection_sort.py', 'slection_sort2.py', 'social', 'test-4.py', 'test.db', 'test_package.py', 'try_customize.py', 'try_customize_err.py', 'try_more_err.py', 'try_more_err2.py', 'try_test_1.py', 'try_test_division.py', 'tyr_customize_err2.py', 'yield_test.py', '__pycache__', '模块1.py']
出现错误:[WinError 183] 当文件已存在时,无法创建该文件。: 'new_directory'
False
D:\TYYSOFT\Study\Python\new_file.txt

1.1.2 sys 模块

  提供了与 Python 解释器和系统交互的接口,包括获取命令行参数控制程序执行退出程序查看 Python 解释器的版本等。
  查看sys模块下有哪些对象,可以使用print(dir(sys))语句。

  • 示例2: sys模块使用举例
import sys

# 获取命令行参数
print(sys.argv)  

# 查看 Python 版本
print(sys.version)  

# 查看sys下有哪些对象
#print(dir(sys))

# 退出程序
sys.exit(0) 

输出:

['sys_study.py']
3.13.1 (tags/v3.13.1:0671451, Dec  3 2024, 19:06:28) [MSC v.1942 64 bit (AMD64)]

1.1.3 math 模块

  提供了各种数学运算的函数和常量,如三角函数指数函数对数函数幂函数数学常数(如 pi 和 e)。

  • 示例3:math模块使用举例
import math

# 计算平方根
print(math.sqrt(25))  

# 计算正弦值
print(math.sin(math.pi / 2))  

# 计算自然对数
print(math.log(10))  

输出:

5.0
1.0
2.302585092994046

1.1.4 random 模块

  用于生成随机数和进行随机选择。

  • 示例4:random模块使用举例
import random

# 生成 0 到 1 之间的随机浮点数
print(random.random())  

# 从列表中随机选择一个元素
my_list = [1, 2, 3, 4, 5]
print(random.choice(my_list))  

# 打乱列表元素顺序
random.shuffle(my_list)
print(my_list)  

输出(每次输出不一样):

0.6254888854381639
1
[2, 4, 3, 1, 5]

1.1.5 datetime 模块

  提供了日期和时间的处理功能,包括日期和时间的创建、格式化、计算和解析等。

  • 示例5:datetime 模块使用举例
from datetime import datetime, timedelta

# 获取当前日期和时间
now = datetime.now()
print(now)  

# 创建特定日期和时间
date = datetime(2025, 1, 15)
print(date)  

# 日期和时间的计算
future_date = now + timedelta(days=7)
print(future_date)  

# 日期和时间的格式化
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_date)  

输出:

2025-01-15 19:12:46.682913
2025-01-15 00:00:00
2025-01-22 19:12:46.682913
2025-01-15 19:12:46

1.1.6 re 模块

  用于正则表达式操作,可用于字符串的匹配、搜索、替换和分割等。

  • 示例6:re模板使用示例
import re

# 查找匹配的字符串
pattern = re.compile(r'\d+')
result = pattern.findall('abc123def456')
print(result)  

# 替换匹配的字符串
new_string = pattern.sub('X', 'abc123def456')
print(new_string)  

输出:

['123', '456']
abcXdefX

1.1.7 json 模块

  用于处理 JSON 数据,包括 JSON 数据的编码(将 Python 对象转换为 JSON 字符串)和解码(将 JSON 字符串转换为 Python 对象)。

import json

data = {'key': 'value', 'list': [1, 2, 3]}

# 将 Python 对象转换为 JSON 字符串
json_string = json.dumps(data)
print(json_string)  

# 将 JSON 字符串转换为 Python 对象
parsed_data = json.loads(json_string)
print(parsed_data)  

输出:

{"key": "value", "list": [1, 2, 3]}
{'key': 'value', 'list': [1, 2, 3]}

1.1.8 collections 模块

  提供了一些有用的数据结构,如 defaultdictCounterdeque 等,可用于替代内置的数据结构,提供更强大的功能。
示例:

from collections import defaultdict, Counter, deque

# defaultdict 提供默认值
dd = defaultdict(int)
dd['key'] += 1
print(dd['key'])  

# Counter 用于计数
counter = Counter(['a', 'b', 'a', 'c', 'a'])
print(counter)  

# deque 是双端队列,支持从两端添加和删除元素
dq = deque([1, 2, 3])
dq.appendleft(0)
dq.append(4)
print(dq)  

输出:

1
Counter({'a': 3, 'b': 1, 'c': 1})
deque([0, 1, 2, 3, 4])

1.1.9 itertools 模块

  提供了各种迭代器函数,可用于组合、排列、笛卡尔积等操作。
示例:

import itertools

# 生成排列
permutations = itertools.permutations([1, 2, 3], 2)
print(list(permutations))  

# 生成组合
combinations = itertools.combinations([1, 2, 3], 2)
print(list(combinations))  

# 生成笛卡尔积
product = itertools.product([1, 2], ['a', 'b'])
print(list(product))  

输出:

[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
[(1, 2), (1, 3), (2, 3)]
[(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]

1.1.10 urllib 模块

  用于网络请求和 URL 处理,可进行 HTTP 请求、URL 解析等操作。
示例:

from urllib.request import urlopen
from urllib.parse import urlparse

# 打开 URL
response = urlopen('http://www.example.com')
print(response.read())  

# 解析 URL
parsed_url = urlparse('http://www.example.com/path?query=value')
print(parsed_url)  

输出:

b'<!doctype html>\n<html>\n<head>\n    <title>Example Domain</title>\n\n    <meta charset="utf-8" />\n    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />\n    <meta name="viewport" content="width=device-width, initial-scale=1" />\n    <style type="text/css">\n    body {\n        background-color: #f0f0f2;\n        margin: 0;\n        padding: 0;\n        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;\n        \n    }\n    div {\n        width: 600px;\n        margin: 5em auto;\n        padding: 2em;\n        background-color: #fdfdff;\n        border-radius: 0.5em;\n        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n    }\n    a:link, a:visited {\n        color: #38488f;\n        text-decoration: none;\n    }\n    @media (max-width: 700px) {\n        div {\n            margin: 0 auto;\n            width: auto;\n        }\n    }\n    </style>    \n</head>\n\n<body>\n<div>\n    <h1>Example Domain</h1>\n    <p>This domain is for use in illustrative examples in documents. You may use this\n    domain in literature without prior coordination or asking for permission.</p>\n    <p><a href="https://www.iana.org/domains/example">More information...</a></p>\n</div>\n</body>\n</html>\n'
ParseResult(scheme='http', netloc='www.example.com', path='/path', params='', query='query=value', fragment='')

1.2 其他比较重要的标准模块

1.2.1 logging 模块

  用于日志记录,可根据不同的级别(如 DEBUGINFOWARNINGERRORCRITICAL)记录日志信息。
示例:

import logging

logging.basicConfig(level=logging.INFO)
logging.info('This is an info message')
logging.error('This is an error message')

输出:

INFO:root:This is an info message
ERROR:root:This is an error message

1.2.2 argparse 模块

  用于解析命令行参数,使程序能够接受命令行输入并处理参数。
示例:

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                    help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))

输出:

D:\TYYSOFT\Study\Python>python argparse_study.py -h
usage: argparse_study.py [-h] [--sum] N [N ...]

Process some integers.

positional arguments:
  N           an integer for the accumulator

options:
  -h, --help  show this help message and exit
  --sum       sum the integers (default: find the max)
D:\TYYSOFT\Study\Python>python argparse_study.py --sum 100 300 22
422

1.2.3 sqlite3 模块

  提供了对 SQLite 数据库的支持,可用于创建数据库、执行 SQL 语句、进行数据查询和更新等操作。
示例:

import sqlite3

# 连接到数据库
conn = sqlite3.connect('example.db')
c = conn.cursor()

# 创建表
c.execute('CREATE TABLE IF NOT EXISTS users (id INT, name TEXT)')

# 插入数据
c.execute('INSERT INTO users (id, name) VALUES (1, "Alice")')

# 提交事务
conn.commit()

# 查询数据
c.execute('SELECT * FROM users')
print(c.fetchall())

# 关闭连接
conn.close()

输出:

[(1, 'Alice')]

注:sqlite3.connect('example.db')会在本地生成数据库文件example.db

1.2.4 time 模块

  提供了时间相关的函数,包括时间获取、时间转换、时间延迟等操作。
示例:

import time

# 获取当前时间戳
print(time.time())  

# 睡眠一段时间
time.sleep(1)  

# 格式化时间
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(formatted_time)  

输出:

1736943637.7549584
2025-01-15 20:20:38

1.3 总结

  Python官方文档:https://docs.python.org/3/library/,读者可以阅读官方手册 ,这里有非常详细的各种内置库的使用说明。


作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来源自豆包AI,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

<< 返回目录

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

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

相关文章

unity学习17:unity里的旋转学习,欧拉角,四元数等

目录 1 三维空间里的旋转与欧拉角&#xff0c;四元数 1.1 欧拉角比较符合直观 1.2 四元数 1.3 下面是欧拉角和四元数的一些参考文章 2 关于旋转的这些知识点 2.1 使用euler欧拉角旋转 2.2 使用quaternion四元数,w,x,y,z 2.3 使用quaternion四元数,类 Vector3.zero 这种…

深度剖析RabbitMQ:从基础组件到管理页面详解

文章目录 一、简介二、Overview2.1 Overview->Totals2.2 Overview->Nodesbroker的属性2.3 Overview->Churn statistics2.4 Overview->Ports and contexts2.5 Overview->Export definitions2.6 Overview->Import definitions 三、Connections连接的属性 四、C…

机器学习中的凸函数和梯度下降法

一、凸函数 在机器学习中&#xff0c;凸函数 和 凸优化 是优化问题中的重要概念&#xff0c;许多机器学习算法的目标是优化一个凸函数。这些概念的核心思想围绕着优化问题的简化和求解效率。下面从简单直观的角度来解释。 1. 什么是凸函数&#xff1f; 数学定义 一个函数 f…

使用 WPF 和 C# 绘制覆盖网格的 3D 表面

此示例展示了如何使用 C# 代码和 XAML 绘制覆盖有网格的 3D 表面。示例使用 WPF 和 C# 将纹理应用于三角形展示了如何将纹理应用于三角形。此示例只是使用该技术将包含大网格的位图应用于表面。 在类级别&#xff0c;程序使用以下代码来定义将点的 X 和 Z 坐标映射到 0.0 - 1.…

深入Android架构(从线程到AIDL)_32 JNI架构原理_Java与C的对接05

1、EIT造形观点 基于熟悉的EIT造形&#xff0c;很容易理解重要的架构设计决策议题。 前言 2、混合式EIT造形 一般EIT造形是同语言的。也就是<E>、 <I>和<T>都使用同一种语言撰写的&#xff0c;例如上述的Java、 C/C等。于此&#xff0c;将介绍一个EIT造…

数字普惠金融对新质生产力的影响研究(2015-2023年)

基于2015—2023年中国制造业上市公司数据&#xff0c;探讨了数字普惠金融对制造业企业新质生产力的影响及作用机理。研究发现&#xff0c;数字普惠金融有助于促进制造业企业新质生产力的发展&#xff0c;尤其是在数字普惠金融的使用深度较大的情况下&#xff0c;其对新质生产力…

装备制造业:建立项目“四算”管理:以合同为源头,以项目为手段实现合同的测算、预算、核算与决算的管控体系

尊敬的各位管理层&#xff1a; 大家好&#xff01;作为装备制造业的 CFO&#xff0c;我今天要向大家汇报的是如何建立项目“四算”管理&#xff0c;即以合同为源头&#xff0c;以项目为手段实现合同的测算、预算、核算与决算的管控体系。在当前市场竞争激烈、成本压力不断增大…

自建RustDesk服务器

RustDesk服务端 下面的截图是我本地的一个服务器做为演示用&#xff0c;你自行的搭建服务需要该服务器有固定的ip地址 1、通过宝塔面板快速安装 2、点击【安装】后会有一个配置信息&#xff0c;默认即可 3、点击【确认】后会自动安装等待安装完成 4、安装完成后点击【打开…

前端实现doc文件预览的三种方式

文章目录 1、docx-preview 实现&#xff08;推荐&#xff09;2、vue-office 实现3、mammoth 实现&#xff08;不推荐&#xff09; 需求&#xff1a;有一个docx文件&#xff0c;需要按其本身的格式&#xff0c;将内容展示出来&#xff0c;即&#xff1a;实现doc文件预览。 本文…

final修饰的用法

1、final修饰类 被final修饰的类不可以在被继承。 比如在Java中String就是final修饰的不可以被继承 2、final修饰成员变量 同时final也可以修饰局部变量 final int N5; 3、final修饰静态变量 final修饰静态的成员变量&#xff0c;&#xff08;在方法中不能定义静态的属性…

Windows 11 安装GTK+3.0 和VScode开发GTK+3.0配置

Windows 11 安装GTK+3.0 和VScode开发GTK+3.0配置 安装msys2下载msys2安装安装msys2安装编译器gcc安装调试器gdb安装GTK+3.0安装C/C++开发GTK+3.0工具配置路径验证GTK+3.0安装验证配置运行GTK DemoVScode配置测试代码文件test.c任务配置文件tasks.jsongdb调试配置文件launch.js…

鸿蒙-页面和自定义组件生命周期

页面生命周期&#xff0c;即被Entry装饰的组件生命周期&#xff0c;提供以下生命周期接口&#xff1a; onPageShow&#xff1a;页面每次显示时触发一次&#xff0c;包括路由过程、应用进入前台等场景。onPageHide&#xff1a;页面每次隐藏时触发一次&#xff0c;包括路由过程、…

国产编辑器EverEdit - 扩展脚本:新建同类型文件(避免编程学习者反复新建保存练习文件)

1 扩展脚本&#xff1a;在当前文件目录下新建同类型文件 1.1 应用场景 用户在进行编程语言学习时&#xff0c;比如&#xff1a;Python&#xff0c;经常做完一个小练习后&#xff0c;又需要新建一个文件&#xff0c;在新建文件的时候&#xff0c;不但要选择文件类型&#xff0c…

使用 selenium-webdriver 开发 Web 自动 UI 测试程序

优缺点 优点 有时候有可能一个改动导致其他的地方的功能失去效果&#xff0c;这样使用 Web 自动 UI 测试程序可以快速的检查并定位问题&#xff0c;节省大量的人工验证时间 缺点 增加了维护成本&#xff0c;如果功能更新过快或者技术更新过快&#xff0c;维护成本也会随之提高…

算法-贪心算法简单介绍

下面是贪心算法视频课的导学内容. 目录 1. 什么是贪心算法?2. 贪心算法简单的三个例子:1. 找零问题2. 最小路径和问题3. 背包问题 3. 贪心算法的特点4. 贪心算法学习的方式? 1. 什么是贪心算法? 简单来说, 我们称以局部最优进而使得全局最优的一种思想实现出来的算法为贪心…

【Hive】新增字段(column)后,旧分区无法更新数据问题

TOC 【一】问题描述 Hive修改数据表结构的需求&#xff0c;比如&#xff1a;增加一个新字段。 如果使用如下语句新增列&#xff0c;可以成功添加列col1。但如果数据表tb已经有旧的分区&#xff08;例如&#xff1a;dt20190101&#xff09;&#xff0c;则该旧分区中的col1将为…

《深度剖析算法优化:提升效率与精度的秘诀》

想象一下&#xff0c;你面前有一堆杂乱无章的数据&#xff0c;你需要从中找到特定的信息&#xff0c;或者按照一定的规则对这些数据进行排序。又或者&#xff0c;你要为一个物流公司规划最佳的配送路线&#xff0c;以降低成本和提高效率。这些问题看似复杂&#xff0c;但都可以…

量子计算:从薛定谔的猫到你的生活

文章背景 说到量子计算&#xff0c;不少人觉得它神秘又遥不可及。其实&#xff0c;它只是量子物理学的一个“应用小分支”。它的核心在于量子比特的“叠加”和“纠缠”&#xff0c;这些听上去像科幻小说的概念&#xff0c;却为计算世界开辟了一片全新的天地。如果经典计算是“…

Linux第二课:LinuxC高级 学习记录day02

2.4、shell中的特殊字符 2.4.4、命令置换符 或者 $() 反引号&#xff1a;esc下面的按键&#xff0c;英文状态下直接按 功能&#xff1a;将一个命令的输出作为另一个命令的参数 echo 不会认为hostname是一个命令 加上 之后&#xff0c;先执行hostname&#xff0c;拿到主机名…

基于mediapipe的手势游戏控制

基于mediapipe的手势游戏控制 ​ 玩游戏&#xff0c;那不是有手就行!!! mediapipe介绍 ​ Mediapipe是Google在2019年开发并提出的一款开源的跨平台多媒体处理框架&#xff0c;用于构建基于机器学习的应用程序&#xff0c;特别是涉及到计算机视觉、音频处理、姿势估计等领域。…