【Python学习】(了解使用库、标准库、第三方库以及综合案例实操)


🔥承渊政道: 个人主页
❄️个人专栏: 《C语言基础语法知识》 《数据结构与算法》 《C++知识内容》 《Linux系统知识》 《算法刷题指南》 《测评文章活动推广》 《大模型语言路线学习》 《MySQL数据库学习》 《Python知识内容》
✨逆境不吐心中苦,顺境不忘来时路!✨ 🎬 博主简介:

在学习Python的过程中,我们经常会看到"库""模块""标准库"和"第三方库"等概念.对于刚接触 Python 的学习者来说,这些名称看起来有些相似,但它们的作用、来源和使用方式并不完全相同.Python之所以能够广泛应用于数据分析、自动化办公、网络开发、人工智能等领域,不仅因为它的语法简洁,还因为它拥有丰富而成熟的库生态.通过调用现成的库,我们不需要从头编写所有功能,只需掌握正确的导入和使用方法,就能快速完成文件处理、数据计算、网络请求、图表绘制等任务.本文将从Python库的基本概念入手,介绍模块与库的使用方式,梳理标准库和第三方库之间的区别,并结合综合案例进行实际操作.通过本篇内容,你不仅能够理解Python库的作用,还能逐步掌握查找、安装、导入和使用库的方法,为后续项目开发打下更加扎实的基础.废话不多说,下面跟着小编的节奏🎵一起去疯狂的学习吧!

目录

1.标准库

1.1认识标准库

Python 标准库是一组随 Python 一起安装的模块.它们由Python官方维护,通常不需要额外安装,直接导入即可:

python 复制代码
import math
import json
from pathlib import Path

1.标准库能做什么

标准库覆盖了大量常见任务:

python 复制代码
# 数学计算
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
  • :包含多个模块的目录,例如 urllib
  • 函数或类 :模块中提供的具体功能,例如 math.sqrt

常见导入方式:

python 复制代码
import math
print(math.sqrt(9))
python 复制代码
from math import sqrt
print(sqrt(9))

通常推荐第一种,因为来源更清楚.

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

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

例如:

python 复制代码
import json       # 标准库
import requests   # 第三方库,通常需要先安装

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

建议先掌握:

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

5.查看模块提供了什么

python 复制代码
import math

print(dir(math))
help(math.sqrt)

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

python 复制代码
print(math.__doc__)

学习标准库不需要一次全部记住.重点是知道"标准库大概能解决哪些问题",实际编程时再查对应模块.

在Python官方文档上可以看到这些库的内容


1.2使用import导入模块

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

python 复制代码
import [模块名]

所谓"模块",其实就是一个单独的.py文件.

使用import语句可以把这个外部的.py文件导入到当前.py文件中,并执行其中的代码.

在Python中,模块需要先导入,才能使用其中的函数、类或变量.

1.导入整个模块

python 复制代码
import math

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

导入后,通过:

python 复制代码
模块名.功能名

来调用模块中的功能.

2.一次导入多个模块

python 复制代码
import math
import random
import datetime

虽然也可以写成:

python 复制代码
import math, random

但通常推荐每个模块单独写一行,更清晰.

3.给模块设置别名

使用 as 可以缩短模块名:

python 复制代码
import datetime as dt

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

常见第三方库也经常使用别名:

python 复制代码
import numpy as np
import pandas as pd

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

python 复制代码
from math import sqrt

result = sqrt(25)
print(result)  # 5.0

此时不需要写 math.sqrt(),可以直接使用 sqrt().

也可以导入多个功能:

python 复制代码
from math import sqrt, pi

print(sqrt(9))
print(pi)

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

python 复制代码
from math import *

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

python 复制代码
import math

或者:

python 复制代码
from math import sqrt

6.导入自己编写的模块

假设有一个文件 tools.py

python 复制代码
def add(a, b):
    return a + b

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

python 复制代码
import tools

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

也可以只导入函数:

python 复制代码
from tools import add

print(add(3, 5))

通常最推荐的写法是:

python 复制代码
import 模块名

因为调用时会明确显示功能来自哪个模块,可读性更好.


1.3代码示例:日期计算

输入任意的两个日期, 计算两个日期之间隔了多少天.

  • 使用 import 语句导入标准库的 datetime模块
  • 使用 datetime.datetime构造两个日期. 参数使用 年, 月, 日 这样的格式.
  • 两个日期对象相减,即可得到日期的差值.
python 复制代码
import datetime
date1 = datetime.datetime(2016, 2, 14)
date2 = datetime.datetime(2026, 7, 18)
print(date2 - date1)

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


1.4代码示例:字符串操作

1.4.1字符串中的单词反转

使用str的split方法进行字符串切分,指定空格为分隔符.返回结果是一个列表.

使用列表的reverse方法进行逆序.

使用str的join方法进行字符串拼接.把列表中的内容进行合并.

python 复制代码
class Solution(object):
    def reverseMessage(self, message):
        tokens = message.split()
        tokens.reverse()
        return ' '.join(tokens)

1.4.2旋转字符串

使用len求字符串的长度.如果长度不相同, 则一定不能旋转得到.

将s和自己进行拼接,然后直接使用in方法来判定goal是否是s + s的子串.

python 复制代码
class Solution(object):
    def rotateString(self, s, goal):
        return len(s) == len(goal) and goal in s + s

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

依次遍历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 即可实现目录的递归遍历.

os.walk返回一个三元组,分别是当前路径,当前路径下包含的目录名(多个),当前路径下包含的文件名(多个)

python 复制代码
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认识第三方库

第三方库 是由 Python 官方标准库之外的开发者或组织提供的功能包.它们通常需要先安装,再使用 import 导入.

例如:

python 复制代码
import requests
import numpy
import pandas

这些库默认不一定随 Python 安装,需要使用 pip 安装.


2.2使用pip安装第三方库

pip是Python内置的包管理器.所谓包管理器就类似于我们平时使用的手机app应用商店一样.

在终端或命令行中执行:

bash 复制代码
pip install requests

部分环境需要写:

bash 复制代码
python -m pip install requests

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

python 复制代码
import requests

1.简单示例

使用 requests 获取网页内容:

python 复制代码
import requests

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

使用 numpy 创建数组:

python 复制代码
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.标准库和第三方库的区别

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

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

bash 复制代码
pip list

查看某个库的信息:

bash 复制代码
pip show requests

卸载第三方库:

bash 复制代码
pip uninstall requests

升级第三方库:

bash 复制代码
pip install --upgrade requests

核心流程就是:

text 复制代码
查找库 → pip 安装 → import 导入 → 调用功能

2.3代码示例:生成二维码

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

得到信息,qrcode这个库,可以用来生成二维码.


2.查看qrcode文档

点击则进入 qrcode 的详情页.文档开头描述了如何安装qrcode.

页面中央位置描述了qrcode库的使用方法.


3.使用pip安装

bash 复制代码
pip install qrcode

4.编写代码

python 复制代码
import qrcode
img = qrcode.make('hello world')
img.save('qrcode.png')

运行完成之后,我们就可以看到有一张二维码的图片,扫一扫显示出来的就是"hello world".使用微信或者其他工具扫码,即可看到二维码内容.所谓二维码,本质上就是使用黑白点阵表示一个字符串.我们日常使用的二维码内部一般是一个URL,扫码后会自动跳转到对应的地址,从而打开一个网页.


2.4代码示例:操作excel

读取excel可以使用xlrd模块.文档地址

修改excel可以使用xlwt模块.文档地址

此处以 xlrd 为例,演示excel的基本操作.

需求有如下excel 表格:

求100班的同学的平均分.

1.安装xlrd

bash 复制代码
pip install xlrd==1.2.0

注意: 此处要指定版本号安装.如果不指定版本号,则安装最新版.最新版里删除了对xlsx格式文件的支持.

2.编写代码

使用 open_workbook 方法打开一个 excel 文件.

使用 xlsx.sheet_by_index(0) 获取到 0 号标签页.

使用 table.nrows 获取到表格的行数.

使用 table.cell_value(row, col) 获取到表格中 row, col 位置的元素值.

python 复制代码
import xlrd
# 1. 打开 xlsx 文件
xlsx = xlrd.open_workbook('文件地址链接')
# 2. 获取 0 号标签页. (当前只有一个标签页)
table = xlsx.sheet_by_index(0)
# 3. 获取总行数
nrows = table.nrows
# 4. 遍历数据
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.安装第三方依赖

pynput 用于监听键盘按键.注意版本不要用最新.playsound 用于播放音频.

python 复制代码
pip install pynput==1.6.8
pip install playsound==1.2.2

2.准备音频文件

此处准备了一个xxx.mp3放到和py代码同级目录中.

3.编写代码

使用 from import 的格式直接导入模块中的指定对象/函数.

使用 keyboard.Listener 监听键盘按键.其中 on_release 会在释放按键时被调用.

使用 listener.start 启动监听器.为了防止程序直接退出, 使用 listener.join 让程序等待用户按键.

使用count 计数,每隔10 次,调用 playsound 播放音频文件.

python 复制代码
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('xxx.mp3')
listener = keyboard.Listener(
on_release=on_release)
listener.start()
listener.join()

运行程序,即可感受到效果.

4.改进代码

上述代码在执行过程中,会感觉到播放音频会导致按键卡顿.可以使用多线程解决这个问题.

关于多线程的知识,在此处不详细介绍.

使用 threading.Thread 引入多线程类.

使用Thread 的构造函数来构造一个线程. target表示线程要执行的任务,args表示target中要调用函数的参数.

使用Thread.start() 启动线程.

python 复制代码
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()
#playsound('xxx.mp3')
listener = keyboard.Listener(
on_release=on_release)
listener.start()
listener.join()

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

3.1需求说明

实现一个命令行版本的学生管理系统.

功能:

新增学生

显示学生

查找学生

删除学生

存档到文件


3.2创建入口函数

使用一个全局列表 students表示所有学生信息.

使用menu函数和用户交互.这是一个自定义函数.

使用insert ,show, find, delete这几个自定义函数完成增删查操作.

使用sys.exit 实现程序退出.

python 复制代码
# 使用列表表示所有的学生
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实现菜单函数

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

3.4实现增删查操作

1.新增学生

python 复制代码
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.显示学生

python 复制代码
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.查找学生

python 复制代码
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.删除学生

python 复制代码
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.约定存档格式

约定存档文件放到 xxx.txt 文件中.

并且以行文本的方式来保存学生信息. 格式如下:

bash 复制代码
学号\t名字\t性别\t班级
学号\t名字\t性别\t班级
学号\t名字\t性别\t班级

每个同学占一行.

每个同学的信息之间使用 \t 制表符进行分隔.

2.实现存档函数

python 复制代码
def save():
"""
存档函数
"""
with open('xxx.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末尾,调用save函数进行存档.

bash 复制代码
# 执行存档
save()

3.实现读档函数

python 复制代码
def load():
"""
读档函数
"""
# 如果存档文件不存在, 则跳过读档环节
if not os.path.exists('d:/record.txt'):
return
# 先清空全局变量里的数据
global students
students = []
with open('xxx.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加载存档.

bash 复制代码
load()

3.6打包成exe程序发布

当前虽然已经实现了一个管理系统,但是.py的文件只能在安装了Python 环境的机器上运行.为了能够更好的部署到其他主机上,可以借助pyinstaller来把Python程序打包成exe程序.

1.安装 pyinstaller

bash 复制代码
pip install pyinstaller

2.打包程序

-F 表示打包成单个 exe (不带动态库)

bash 复制代码
pyinstall -F 学生管理系统.py

注意: 如果提示找不到pyinstaller命令,则需要重启一下 PyCharm.稍等片刻,很快打包完成.

此时就可以把这个程序拷贝给其他机器使用了.无需Python环境即可运行.


4.后续扩展

python3 cookbook

python经典进阶书籍.针对各种典型场景提供了一些解决方案.

awesome-python

整理了Python的一些非常实用的程序库.

500Lines or Less

使用简短的Python代码来实现一些有意思的程序.

🚀真正的勇者不是流泪的人,而是含泪奔跑的人!


敬请期待下一篇文章内容


每日心灵鸡汤: 人生没有无用的经历,走的每一步都算数!

很喜欢村上春树的这段话:"不必纠结当下,也不必太担忧未来,人生没有无用的经历."所以我们一直走,天一定会亮.既然有想要去做的事,就应该笃信,尽管不知道为此还需要再付出多少努力,但累一点、慢一点都没关系.只要我不停下来,我都是在一点点靠近我想要的未来.

相关推荐
草莓熊Lotso9 小时前
【LangChain】输出解析器全解:让大模型输出从 “聊天” 变 “机器可读”
服务器·数据库·python·langchain·pip
卷无止境9 小时前
Python 脚本工程化:从"能跑就行"到"生产级代码"
后端·python
卷无止境9 小时前
Python 函数式编程:从思想到实践
后端·python
YM52e10 小时前
鸿蒙Flutter Card组件:Material设计风格卡片
android·学习·flutter·华为·harmonyos·鸿蒙
YangYang9YangYan11 小时前
2026通信工程专业学生无项目经验学习数据分析的价值与路径
学习·数据挖掘·数据分析
满怀冰雪18 小时前
06-自动微分入门:用 Paddle 计算梯度
人工智能·python·深度学习·paddle
世人万千丶20 小时前
鸿蒙Flutter TextStyle样式配置
学习·flutter·harmonyos·鸿蒙
吃着火锅x唱着歌21 小时前
Effective C++ 学习笔记 条款37 绝不重新定义继承而来的缺省参数值
c++·笔记·学习
小弥儿21 小时前
GitHub今日热榜 | 2026-07-19
人工智能·学习·github·知识图谱