1.标准库
1.1认识标准库
python 标准库是一组随 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 - 包:包含多个模块的目录,例如
urllib - 函数或类:模块中提供的具体功能,例如
math.sqrt
常见导入方式:
import math print(math.sqrt(9))
from math import sqrt print(sqrt(9))
通常推荐第一种,因为来源更清楚.
3.标准库与第三方库的区别
| 类型 | 示例 | 是否需要安装 |
|---|---|---|
| 内置功能 | print、len、list | 不需要导入 |
| 标准库 | json、pathlib、datetime | 不需要安装 |
| 第三方库 | requests、numpy、pandas | 通常需要 pip install |
例如:
import json # 标准库 import requests # 第三方库,通常需要先安装
4.初学者优先认识这些模块
建议先掌握:
pathlib:文件和目录datetime:日期与时间json:json 数据random:随机数math:数学运算re:正则表达式collections:常用数据结构itertools:迭代工具os、sys:操作系统和 python 运行环境logging:日志记录
5.查看模块提供了什么
import math print(dir(math)) help(math.sqrt)
也可以查看模块文档字符串:
print(math.__doc__)
学习标准库不需要一次全部记住.重点是知道"标准库大概能解决哪些问题",实际编程时再查对应模块.
1.2使用import导入模块
使用 import 可以导入标准库的一个 模块
import [模块名]
所谓"模块",其实就是一个单独的.py文件.
使用import语句可以把这个外部的.py文件导入到当前.py文件中,并执行其中的代码.
在python中,模块需要先导入,才能使用其中的函数、类或变量.
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)
常见第三方库也经常使用别名:
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代码示例:日期计算
输入任意的两个日期, 计算两个日期之间隔了多少天.
- 使用 import 语句导入标准库的 datetime模块
- 使用 datetime.datetime构造两个日期. 参数使用 年, 月, 日 这样的格式.
- 两个日期对象相减,即可得到日期的差值.
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方法进行字符串拼接.把列表中的内容进行合并.
class solution(object):
def reversemessage(self, message):
tokens = message.split()
tokens.reverse()
return ' '.join(tokens)
1.4.2旋转字符串

使用len求字符串的长度.如果长度不相同, 则一定不能旋转得到.
将s和自己进行拼接,然后直接使用in方法来判定goal是否是s + s的子串.
class solution(object):
def rotatestring(self, s, goal):
return len(s) == len(goal) and goal in s + s
1.4.3统计是给定字符串前缀的字符串数目

依次遍历words中的字符串.
直接使用字符串的startswith方法即可判定当前字符串是否是s的前缀.
class solution(object):
def countprefixes(self, words, s):
res = 0
for word in words:
if s.startswith(word):
res += 1
return res1.5代码示例:文件查找工具
指定一个待搜索路径,同时指定一个待搜索的关键字. 在待搜索路径中查找是否文件名中包含这个关键字.
使用 os.walk 即可实现目录的递归遍历.
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}')
2.第三方库
2.1认识第三方库
第三方库是由 python 官方标准库之外的开发者或组织提供的功能包.它们通常需要先安装,再使用 import 导入.
例如:
import requests import numpy import pandas
这些库默认不一定随 python 安装,需要使用 pip 安装.
2.2使用pip安装第三方库
pip是python内置的包管理器.所谓包管理器就类似于我们平时使用的手机app应用商店一样.
在终端或命令行中执行:
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.常见第三方库
| 用途 | 第三方库 |
|---|---|
| 网络请求 | requests、httpx |
| 数据分析 | pandas |
| 数值计算 | numpy |
| 数据可视化 | matplotlib |
| 网页开发 | flask、django、fastapi |
| 爬虫 | beautifulsoup4、scrapy |
| 机器学习 | scikit-learn |
| 深度学习 | pytorch、tensorflow |
| excel 处理 | openpyxl |
| 图像处理 | pillow、opencv-python |
3.标准库和第三方库的区别
import math # 标准库,不需要额外安装 import requests # 第三方库,通常需要先安装
| 类型 | 示例 | 是否需要安装 |
|---|---|---|
| python 内置功能 | print、len | 不需要 |
| 标准库 | math、json、random | 不需要 |
| 第三方库 | requests、numpy、pandas | 通常需要 |
3.查看已安装的第三方库
pip list
查看某个库的信息:
pip show requests
卸载第三方库:
pip uninstall requests
升级第三方库:
pip install --upgrade requests
核心流程就是:
查找库 → pip 安装 → import 导入 → 调用功能
2.3代码示例:生成二维码
1.通过搜索引擎,确定使用哪个库

得到信息,qrcode这个库,可以用来生成二维码.
2.查看qrcode文档

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

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

3.使用pip安装
pip install qrcode

4.编写代码
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
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 位置的元素值.
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 用于播放音频.
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 播放音频文件.
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() 启动线程.
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 实现程序退出.
# 使用列表表示所有的学生
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.约定存档格式
约定存档文件放到 xxx.txt 文件中.
并且以行文本的方式来保存学生信息. 格式如下:
学号\t名字\t性别\t班级 学号\t名字\t性别\t班级 学号\t名字\t性别\t班级
每个同学占一行.
每个同学的信息之间使用 \t 制表符进行分隔.
2.实现存档函数
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函数进行存档.
# 执行存档 save()
3.实现读档函数
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加载存档.
load()
3.6打包成exe程序发布
当前虽然已经实现了一个管理系统,但是.py的文件只能在安装了python 环境的机器上运行.为了能够更好的部署到其他主机上,可以借助pyinstaller来把python程序打包成exe程序.
1.安装 pyinstaller
pip install pyinstaller
2.打包程序
-f 表示打包成单个 exe (不带动态库)
pyinstall -f 学生管理系统.py
注意: 如果提示找不到pyinstaller命令,则需要重启一下 pycharm.稍等片刻,很快打包完成.
此时就可以把这个程序拷贝给其他机器使用了.无需python环境即可运行.
4.后续扩展
python3 cookbook
python经典进阶书籍.针对各种典型场景提供了一些解决方案.
awesome-python
整理了python的一些非常实用的程序库.
500lines or less
使用简短的python代码来实现一些有意思的程序.
到此这篇关于python 使用库、标准库、第三方库及综合案例实操的文章就介绍到这了,更多相关python标准库和第三方库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论