
🔥承渊政道: 个人主页
❄️个人专栏: 《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.标准库与第三方库的区别
| 类型 | 示例 | 是否需要安装 |
|---|---|---|
| 内置功能 | print、len、list |
不需要导入 |
| 标准库 | json、pathlib、datetime |
不需要安装 |
| 第三方库 | requests、numpy、pandas |
通常需要 pip install |
例如:
python
import json # 标准库
import requests # 第三方库,通常需要先安装
4.初学者优先认识这些模块
建议先掌握:
pathlib:文件和目录datetime:日期与时间json:JSON 数据random:随机数math:数学运算re:正则表达式collections:常用数据结构itertools:迭代工具os、sys:操作系统和 Python 运行环境logging:日志记录
5.查看模块提供了什么
python
import math
print(dir(math))
help(math.sqrt)
也可以查看模块文档字符串:
python
print(math.__doc__)
学习标准库不需要一次全部记住.重点是知道"标准库大概能解决哪些问题",实际编程时再查对应模块.
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)

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}')
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.常见第三方库
| 用途 | 第三方库 |
|---|---|
| 网络请求 | requests、httpx |
| 数据分析 | pandas |
| 数值计算 | numpy |
| 数据可视化 | matplotlib |
| 网页开发 | flask、django、fastapi |
| 爬虫 | beautifulsoup4、scrapy |
| 机器学习 | scikit-learn |
| 深度学习 | pytorch、tensorflow |
| Excel 处理 | openpyxl |
| 图像处理 | pillow、opencv-python |
3.标准库和第三方库的区别
python
import math # 标准库,不需要额外安装
import requests # 第三方库,通常需要先安装
| 类型 | 示例 | 是否需要安装 |
|---|---|---|
| Python 内置功能 | print、len |
不需要 |
| 标准库 | math、json、random |
不需要 |
| 第三方库 | requests、numpy、pandas |
通常需要 |
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.后续扩展
python经典进阶书籍.针对各种典型场景提供了一些解决方案.
整理了Python的一些非常实用的程序库.
使用简短的Python代码来实现一些有意思的程序.

🚀真正的勇者不是流泪的人,而是含泪奔跑的人!
敬请期待下一篇文章内容
每日心灵鸡汤: 人生没有无用的经历,走的每一步都算数!
很喜欢村上春树的这段话:"不必纠结当下,也不必太担忧未来,人生没有无用的经历."所以我们一直走,天一定会亮.既然有想要去做的事,就应该笃信,尽管不知道为此还需要再付出多少努力,但累一点、慢一点都没关系.只要我不停下来,我都是在一点点靠近我想要的未来.
