游乐游手机版
首页/编程语言/文章详情

Python标准库与第三方库使用及综合案例实操

时间:2026-07-21 20:37
Python标准库随解释器安装,无需额外下载,覆盖基础需求;第三方库需通过pip安装,解决特定领域问题。使用import导入模块,可调用数学、日期、文件操作等功能,并能实现二维码生成、Excel数据处理等实操案例。

Python 的标准库,说白了就是 Python 官方替你准备好的那一套工具集——安装完 Python 解释器,它们就已经躺在你电脑里了,无需额外下载,直接 import 就能用。对初学者来说,这可能是最有价值的“隐形财富”,因为它覆盖了日常开发中绝大多数基础需求。

1. 标准库

1.1 认识标准库

标准库是一组随 Python 一起安装的模块,由 Python 官方维护。它们的导入方式很简单:

import math
import json
from pathlib import Path

1. 标准库能做什么

标准库覆盖了大量常见任务,来看几个例子:

# 数学计算
import math
print(math.sqrt(16))

# 随机数
import random
print(random.randint(1, 10))

# 日期时间
from datetime import datetime
print(datetime.now())

# JSON 数据
import json
data = json.loads('{"name": "Tom"}')
print(data["name"])

# 文件路径
from pathlib import Path
print(Path.cwd())

2. 模块、包和函数

这几个概念可以用一个简单的类比来理解:

  • 模块:一个 Python 文件,比如 math.py
  • :包含多个模块的目录,比如 urllib 包下面有 requestparse 等模块
  • 函数或类:模块中提供的具体功能,比如 math.sqrt

常见的导入方式有两种:

import math
print(math.sqrt(9))
from math import sqrt
print(sqrt(9))

通常推荐第一种,因为调用时能一眼看出函数来自哪个模块,可读性更好。

3. 标准库与第三方库的区别

类型示例是否需要安装
内置功能printlenlist不需要导入
标准库jsonpathlibdatetime不需要安装
第三方库requestsnumpypandas通常需要 pip install

举个例子:

import json       # 标准库,直接导入
import requests   # 第三方库,通常需要先安装

4. 初学者优先认识这些模块

标准库有上百个模块,不需要一口气全记住。但下面这些是高频使用的,建议先混个脸熟:

  • pathlib:文件和目录操作
  • datetime:日期与时间
  • json:JSON 数据解析
  • random:随机数生成
  • math:数学运算
  • re:正则表达式
  • collections:常用数据结构(如 deque、Counter)
  • itertools:迭代工具
  • ossys:操作系统和 Python 运行环境
  • logging:日志记录

5. 查看模块提供了什么

拿到一个模块,想知道它里面有什么?直接用 dir()help()

import math
print(dir(math))       # 列出模块中所有名称
help(math.sqrt)        # 查看具体函数的帮助文档

也可以查看模块的文档字符串:

print(math.__doc__)

学习标准库不需要一次全部记住。重点是知道“标准库大概能解决哪些问题”,实际编程时再查对应模块。官方文档是最终的参考宝典。

1.2 使用 import 导入模块

import 可以导入标准库的一个模块:

import [模块名]

所谓“模块”,其实就是一个单独的 .py 文件。使用 import 语句可以把这个外部的 .py 文件导入到当前文件中,并执行其中的代码。模块需要先导入,才能使用其中的函数、类或变量。

1. 导入整个模块

import math
result = math.sqrt(16)
print(result)  # 4.0

导入后,通过 模块名.功能名 来调用模块中的功能。

2. 一次导入多个模块

import math
import random
import datetime

虽然也可以写成 import math, random,但通常推荐每个模块单独写一行,更清晰。

3. 给模块设置别名

使用 as 可以缩短模块名:

import datetime as dt
now = dt.datetime.now()
print(now)

很多第三方库也习惯用别名,比如 numpy 常被简写为 nppandas 简写为 pd

import numpy as np
import pandas as pd

4. 从模块中导入指定功能

from math import sqrt
result = sqrt(25)
print(result)  # 5.0

此时不需要写 math.sqrt(),可以直接使用 sqrt()。也可以导入多个功能:

from math import sqrt, pi
print(sqrt(9))
print(pi)

5. 不建议使用通配符导入

from math import *

这种写法会导入模块中的大量名称,容易造成命名冲突,也难以判断某个函数来自哪里。更推荐:

import math

或者:

from math import sqrt

6. 导入自己编写的模块

假设有一个文件 tools.py

def add(a, b):
    return a + b

在同一目录的另一个 Python 文件中可以这样导入:

import tools
result = tools.add(3, 5)
print(result)  # 8

也可以只导入函数:

from tools import add
print(add(3, 5))

通常最推荐的写法还是 import 模块名,因为调用时会明确显示功能来自哪个模块,可读性更好。

1.3 代码示例:日期计算

输入任意两个日期,计算它们之间相隔多少天。这个需求在实际开发中很常见,比如计算合同到期时间、项目工期等。用标准库的 datetime 模块几行代码就能搞定:

  • 使用 import datetime 导入模块
  • datetime.datetime(year, month, day) 构造两个日期对象
  • 两个日期对象直接相减,得到差值
import datetime
date1 = datetime.datetime(2016, 2, 14)
date2 = datetime.datetime(2026, 7, 18)
print(date2 - date1)

关于 datetime 的更多操作,参考官方文档即可。

1.4 代码示例:字符串操作

1.4.1 字符串中的单词反转

Python使用库、标准库、第三方库及综合案例实操

思路很简单:先用 split() 按空格切分字符串得到单词列表,然后反转列表,最后用 join() 拼接回去。注意 split() 默认会处理连续空格和首尾空格,正好符合要求。

class Solution(object):
    def reverseMessage(self, message):
        tokens = message.split()
        tokens.reverse()
        return ' '.join(tokens)

1.4.2 旋转字符串

Python使用库、标准库、第三方库及综合案例实操

判断一个字符串能否通过旋转得到另一个字符串,有个经典技巧:如果长度相等,且 goals + s 的子串,那么就能旋转得到。因为 s + s 包含了所有旋转后的可能结果。

class Solution(object):
    def rotateString(self, s, goal):
        return len(s) == len(goal) and goal in s + s

1.4.3 统计是给定字符串前缀的字符串数目

Python使用库、标准库、第三方库及综合案例实操

遍历 words 列表,对每个单词用 startswith() 方法判断它是不是 s 的前缀。Python 的字符串方法非常直观,代码写出来几乎就是自然语言。

class Solution(object):
    def countPrefixes(self, words, s):
        res = 0
        for word in words:
            if s.startswith(word):
                res += 1
        return res

1.5 代码示例:文件查找工具

指定一个搜索路径和一个关键词,找出该路径下所有文件名中包含关键词的文件。这个需求用 os.walk 来实现最方便——它会递归遍历目录树,返回当前路径、子目录列表和文件名列表。

import os
inputPath = input('请输入待搜索路径: ')
pattern = input('请输入待搜索关键词: ')
for dirpath, dirnames, filenames in os.walk(inputPath):
    for f in filenames:
        if pattern in f:
            print(f'{dirpath}/{f}')

关于 os 模块的更多操作,可以参考官方文档。

2. 第三方库

2.1 认识第三方库

标准库之外,还有成千上万个由社区开发者贡献的第三方库。它们通常解决特定领域的问题,比如网络请求、数据分析、图像处理等。使用前需要先安装,然后通过 import 导入。

import requests
import numpy
import pandas

这些库默认不会随 Python 安装,需要使用 pip 安装。

2.2 使用 pip 安装第三方库

pip 是 Python 内置的包管理器,类似于手机上的应用商店。在终端或命令行中执行:

pip install requests

部分环境需要写成:

python -m pip install requests

安装完成后,就可以在代码中导入了:

import requests

1. 简单示例

使用 requests 获取网页内容:

import requests
response = requests.get("https://example.com")
print(response.status_code)

使用 numpy 创建数组:

import numpy as np
numbers = np.array([1, 2, 3, 4])
print(numbers)

2. 常见第三方库

用途第三方库
网络请求requestshttpx
数据分析pandas
数值计算numpy
数据可视化matplotlib
网页开发flaskdjangofastapi
爬虫beautifulsoup4scrapy
机器学习scikit-learn
深度学习pytorchtensorflow
Excel 处理openpyxl
图像处理pillowopencv-python

3. 标准库和第三方库的区别

import math       # 标准库,不需要额外安装
import requests   # 第三方库,通常需要先安装
类型示例是否需要安装
Python 内置功能printlen不需要
标准库mathjsonrandom不需要
第三方库requestsnumpypandas通常需要

4. 查看已安装的第三方库

pip list

查看某个库的信息:

pip show requests

卸载第三方库:

pip uninstall requests

升级第三方库:

pip install --upgrade requests

核心流程可以总结为:查找库 → pip 安装 → import 导入 → 调用功能

2.3 代码示例:生成二维码

1. 通过搜索引擎,确定使用哪个库

Python使用库、标准库、第三方库及综合案例实操

搜索“Python 生成二维码”,很快就能找到 qrcode 这个库。

2. 查看 qrcode 文档

Python使用库、标准库、第三方库及综合案例实操

点击进入 qrcode 的详情页,文档开头会说明如何安装。

Python使用库、标准库、第三方库及综合案例实操

页面中央描述了使用方法。

Python使用库、标准库、第三方库及综合案例实操

3. 使用 pip 安装

pip install qrcode

Python使用库、标准库、第三方库及综合案例实操

4. 编写代码

import qrcode
img = qrcode.make('hello world')
img.sa ve('qrcode.png')

运行后,当前目录下会生成一张二维码图片。用微信或其他工具扫码,就能看到“hello world”。所谓二维码,本质上就是用黑白点阵表示一个字符串。日常使用的二维码内部通常是一个 URL,扫码后自动跳转到对应地址。

2.4 代码示例:操作 Excel

读取 Excel 文件可以用 xlrd 模块,修改可以用 xlwt。这里以 xlrd 为例,演示基本操作。

假设有这样一个 Excel 表格:

Python使用库、标准库、第三方库及综合案例实操

需求:求 101 班同学的平均分。

1. 安装 xlrd(注意指定版本,因为最新版删除了对 xlsx 的支持):

pip install xlrd==1.2.0

2. 编写代码:

import xlrd

# 1. 打开 xlsx 文件
xlsx = xlrd.open_workbook('文件地址链接')

# 2. 获取 0 号标签页(当前只有一个标签页)
table = xlsx.sheet_by_index(0)

# 3. 获取总行数
nrows = table.nrows

# 4. 遍历数据,统计 101 班的总分和人数
count = 0
total = 0
for i in range(1, nrows):
    # 使用 cell_value(row, col) 获取指定坐标单元格的值
    classId = table.cell_value(i, 1)
    if classId == 101:
        total += table.cell_value(i, 2)
        count += 1

print(f'平均分: {total / count}')

2.5 代码示例:“程序员鼓励师”

监听键盘按键,每按 20 下就自动播放一段音频,给自己打打气。这个创意来自一位程序员的自我调侃,实现起来也不复杂。

1. 安装第三方依赖:

pip install pynput==1.6.8
pip install playsound==1.2.2

2. 准备一个音频文件(比如 ding.mp3),放到和 py 代码同级的目录。

3. 编写代码:

from pynput import keyboard
from playsound import playsound

count = 0

def on_release(key):
    print(key)
    global count
    count += 1
    if count % 10 == 0:
        playsound('ding.mp3')

listener = keyboard.Listener(on_release=on_release)
listener.start()
listener.join()

运行程序,每按 10 次键就会播放一次音频。不过你会发现播放音频时按键会卡顿,这是因为 playsound 是阻塞的。可以用多线程解决:

from pynput import keyboard
from playsound import playsound
from threading import Thread

count = 0

def on_release(key):
    print(key)
    global count
    count += 1
    if count % 10 == 0:
        t = Thread(target=playsound, args=('ding.mp3',))
        t.start()

listener = keyboard.Listener(on_release=on_release)
listener.start()
listener.join()

多线程让音频播放和键盘监听并行执行,体验就流畅多了。

3. 综合案例:学生管理系统

3.1 需求说明

实现一个命令行版本的学生管理系统,功能包括:

  • 新增学生
  • 显示所有学生
  • 根据名字查找学生
  • 删除学生
  • 存档到文件

这是一个经典的练手项目,能综合运用前面学到的函数、列表、字典、文件操作等知识。

3.2 创建入口函数

使用一个全局列表 students 存储所有学生信息。通过 menu() 函数与用户交互,然后调用 insert()show()find()delete() 等自定义函数完成具体操作。

# 使用列表表示所有的学生
students = []

def main():
    """
    程序的入口函数
    """
    print('+--------------------------+')
    print('| 欢迎来到学生管理系统! |')
    print('+--------------------------+')
    while True:
        choice = menu()
        if choice == 0:
            sys.exit()
        if choice == 1:
            insert()
        elif choice == 2:
            show()
        elif choice == 3:
            find()
        elif choice == 4:
            delete()
        else:
            print('您的输入有误! 请重新输入!')

main()

3.3 实现菜单函数

def menu():
    """
    显示程序菜单
    """
    print(" 1. 新增学生信息")
    print(" 2. 显示所有同学信息")
    print(" 3. 根据名字查找学生信息")
    print(" 4. 删除学生信息")
    print(" 0. 退出程序")
    choice = input(" 请输入您的选择: ")
    return int(choice)

3.4 实现增删查操作

1. 新增学生

def insert():
    print("[新增学生] 开始!")
    studentId = input("请输入学生的学号: ")
    name = input("请输入学生的姓名: ")
    gender = input("请输入学生的性别: ")
    if gender not in ('男', '女'):
        print("性别不符合要求! 新增学生失败!")
        return
    className = input("请输入学生的班级: ")
    # 使用一个字典表示学生信息
    student = {
        'studentId': studentId,
        'name': name,
        'gender': gender,
        'className': className
    }
    # 把字典添加到学生列表中
    global students
    students.append(student)
    print("[新增学生] 完毕!")

2. 显示学生

def show():
    print("[显示学生] 开始!")
    for s in students:
        print(f"[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
    print(f"[显示学生] 完毕! 共显示了 {len(students)} 条记录!")

3. 查找学生

def find():
    print("[查找学生] 开始!")
    name = input("请输入要查找的同学姓名: ")
    count = 0
    for s in students:
        if name == s['name']:
            print(f"[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
            count += 1
    print(f"[查找学生] 完毕! 共查找到 {count} 条记录!")

4. 删除学生

def delete():
    print("[删除学生] 开始!")
    studentId = input("请输入要删除的同学学号: ")
    count = 0
    for s in students:
        if studentId == s['studentId']:
            print(f"删除 {s['name']} 同学的信息!")
            students.remove(s)
            count += 1
    print(f"[删除学生] 完毕! 共删除 {count} 条记录!")

3.5 加入存档读档

1. 约定存档格式

存档文件约定为 record.txt,以行文本方式保存学生信息,格式如下:

学号\t名字\t性别\t班级
学号\t名字\t性别\t班级
学号\t名字\t性别\t班级

每个同学占一行,信息之间用制表符 \t 分隔。

2. 实现存档函数

def sa ve():
    """
    存档函数
    """
    with open('record.txt', 'w') as f:
        for s in students:
            f.write(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}\n")
    print(f"[存档成功] 共存储了 {len(students)} 条记录!")

insert()delete() 末尾调用 sa ve() 进行存档。

# 执行存档
sa ve()

3. 实现读档函数

def load():
    """
    读档函数
    """
    # 如果存档文件不存在,则跳过读档环节
    if not os.path.exists('record.txt'):
        return
    # 先清空全局变量里的数据
    global students
    students = []
    with open('record.txt', 'r') as f:
        for line in f:
            line = line.strip()
            tokens = line.split('\t')
            if len(tokens) < 4:
                print(f"文件格式有误! line={line}")
                continue
            student = {
                'studentId': tokens[0],
                'name': tokens[1],
                'gender': tokens[2],
                'className': tokens[3]
            }
            students.append(student)
    print(f"[读档成功] 共读取了 {len(students)} 条记录!")

main() 函数开头调用 load() 加载存档。

load()

3.6 打包成 exe 程序发布

目前这个管理系统只能在安装了 Python 环境的机器上运行。如果想部署到其他没有 Python 的电脑上,可以用 pyinstaller 打包成 exe 文件。

1. 安装 pyinstaller

pip install pyinstaller

2. 打包程序(-F 表示打包成单个 exe 文件)

pyinstaller -F 学生管理系统.py

注意:如果提示找不到 pyinstaller 命令,重启一下 PyCharm 或终端。稍等片刻,打包完成后在 dist 目录下就能找到 学生管理系统.exe。这个文件可以直接拷贝到其他 Windows 电脑上运行,无需安装 Python。

4. 后续扩展

学完这些基础,如果还想继续深入,下面几本书或资源值得一看:

  • Python3 Cookbook:Python 经典进阶书籍,针对各种典型场景提供了解决方案,非常适合有基础后翻阅。
  • awesome-python:GitHub 上的一个项目,整理了 Python 各种实用库,按领域分类,是找库的利器。
  • 500 Lines or Less:用简短代码(500 行以内)实现一些有趣的应用,可以帮你理解大型项目的设计思路。

编程之路,动手实践是最重要的。把本文中的代码亲手敲一遍,遇到问题查文档、搜资料,慢慢地就能建立起自己的编程直觉。

来源:https://www.jb51.net/python/367799rrm.htm
上一篇Django配置Kafka消息队列实现异步任务处理 下一篇ThinkPHP 6.0私活报价参考与避坑指南
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
FileZilla断点续传设置与操作指南
编程语言 · 2026-07-25

FileZilla断点续传设置与操作指南

FileZilla支持断点续传,需客户端与服务器均开启REST命令。设置中确保启用断点续传及继续传输选项。中断后自动或手动从断点恢复。注意服务器支持、传输模式匹配及文件完整性校验。

Debian系统C++编译器位置查找方法
编程语言 · 2026-07-25

Debian系统C++编译器位置查找方法

在Debian系统中,通过apt安装的C++编译器g++默认位于 usr bin g++,可使用which或whereis命令验证路径。g++属于build-essential软件包,若未安装则需执行sudoaptinstallbuild-essential。该包还包含gcc、make等编译工具链,g++是GNUC++编译器,实际是符号链接指向具体版本,验证

Debian系统安装C++环境的方法
编程语言 · 2026-07-25

Debian系统安装C++环境的方法

在Debian系统安装C++开发环境:先sudoaptupdate更新包列表,再sudoaptinstallbuild-essential安装编译工具链,或单独安装g++。用g++--version验证。可选安装VSCode、GDB、CMake等工具并配置默认编译器版本。

Debian系统C++开发环境配置指南
编程语言 · 2026-07-25

Debian系统C++开发环境配置指南

在Debian系统中,先执行aptupdate更新软件包列表,再安装build-essential元包即可获得GCC、G++、Make和GDB。通过运行g++--version命令验证编译器安装成功。可选安装VisualStudioCode、CLion等编辑器及CMake构建工具,并编写一个简单的HelloWorld程序,使用g++编译运行以验证环境配置正确

通过cpustat工具查看CPU状态的具体方法与详细步骤
编程语言 · 2026-07-25

通过cpustat工具查看CPU状态的具体方法与详细步骤

cpustat是sysstat包中的CPU监控工具,可按固定间隔输出带时间戳的CPU使用率统计。安装后运行cpustat即可实时显示各核心信息,常用指标包括%usr、%sys、%iowait、%steal和%idle,用于定位用户态、内核态或I O瓶颈。高级选项-c可显示单核统计,-m可同时查看内存使用,适合脚本采集和性能分析。