使用库:标准库和第三方库
在开发中,我们不需要重复造轮子。库就是别人已经写好的代码,可以直接拿来用。一个编程语言能否流行,不仅取决于语法是否简单,更取决于其生态是否完备——也就是是否有足够丰富的库来应对各种场景。
按照来源,库大致分为两类:
- 标准库:Python 自带的库,安装 Python 后直接使用。
- 第三方库:其他人实现的库,需要额外安装。
标准库
认识标准库
Python 内置了非常丰富的库,涵盖文本处理、时间日期、数学计算、文件目录、数据存储、加密解密、操作系统相关、并发编程、网络编程及多媒体等。我们无需背诵所有内容,只需了解有哪些功能,遇到问题时能查阅文档即可。
导入模块
使用 import 语句可以导入标准库中的模块。所谓'模块',通常就是一个独立的 .py 文件。通过 import 语句,可以将外部代码引入当前文件并执行。
import module_name
日期计算实战
输入任意两个日期,计算它们之间相隔的天数,这是实际开发中的常见需求。
- 导入
datetime模块。 - 构造两个日期对象,参数格式为
年/月/日。 - 两个日期对象相减,直接得到差值。
import datetime
# 构造日期对象
date1 = datetime.datetime(2006, 12, 14)
date2 = datetime.datetime(2025, 12, 14)
# 计算差值
print(date2 - date1)
优化写法:
如果觉得每次都要写 datetime. 比较繁琐,可以使用别名或直接导入类。
from datetime import datetime
date1 = datetime(2006, 12, 14)
date2 = datetime(2025, 12, 14)
print(date2 - date1)
或者给模块起个简短的别名:
import datetime as dt
date1 = dt.datetime(2006, 12, 14)
date2 = dt.datetime(2025, 12, 14)
print(date2 - date1)
关于 datetime 的更多操作(如格式化、判断星期几),建议查阅官方文档。
字符串操作
字符串是 Python 的内置类型,很多方法无需导入额外模块即可直接使用。
翻转单词顺序
需求:输入一个英文句子,翻转句子中单词的顺序,但单词内字符顺序不变。
思路:
- 使用
split方法按空格切分字符串,返回列表。 - 使用列表的
reverse方法逆序。 - 使用
join方法将列表重新拼接成字符串。
def reverse_words(s: str) -> str:
tokens = s.split()
tokens.reverse()
return ' '.join(tokens)
print(reverse_words('I am a student.')) # 输出:student. a am I
旋转字符串
需求:给定两个字符串 s 和 goal,如果 s 经过若干次旋转(最左字符移到最右)能变成 goal,返回 True。
思路:
- 首先检查长度是否一致,不一致则直接返回
False。 - 将
s与自身拼接 (s + s),此时所有可能的旋转结果都包含在这个新字符串中。 - 使用
in运算符判断goal是否为子串。
def rotate_string(s: str, goal: str) -> bool:
if len(s) != len(goal):
return False
return goal in (s + s)
print(rotate_string('abcde', 'cdeab')) # True
print(rotate_string('abcde', 'edcba')) # False
统计前缀字符串数目
需求:给定字符串数组 words 和目标字符串 s,统计 words 中有多少个字符串是 s 的前缀。
思路:遍历数组,利用 startswith 方法判断。
def count_prefixes(words: list, s: str) -> int:
count = 0
for word in words:
if s.startswith(word):
count += 1
return count
print(count_prefixes(['a', 'b', 'c', 'ab', 'bc', 'abc'], 'abc')) # 输出:3
文件查找工具
指定搜索路径和关键字,递归查找文件名中包含该关键字的文件。
思路:
- 使用
os.walk实现目录递归遍历。 os.walk返回三元组:(当前路径,当前目录名列表,当前文件名列表)。
import os
input_path = input('请输入待搜索路径:')
pattern = input('请输入待搜索关键词:')
for dirpath, _, filenames in os.walk(input_path):
for f in filenames:
if pattern in f:
print(f'{dirpath}/{f}')
此方法比手动编写递归代码更简洁高效。
第三方库
认识第三方库
虽然标准库很强大,但面对特定场景(如生成二维码、复杂 Excel 操作),第三方库往往提供了更专业的解决方案。当遇到需求时,可以通过搜索引擎或 PyPI 网站确定合适的库。
使用 pip 安装
pip 是 Python 内置的包管理器,类似于手机的应用商店。它用于从 PyPI 下载和管理第三方库。
安装命令:
pip install [库名]
注意事项:
- 确保网络连接畅通。
- 如果提示找不到模块,请检查 IDE 的 Python 解释器设置是否正确。
- 部分库可能需要指定版本,例如
xlrd旧版支持.xls,新版支持.xlsx,需根据需求选择。
生成二维码
需求:将一段文字或 URL 转换为二维码图片。
步骤:
- 确定库:搜索得知
qrcode库适合此任务。 - 安装:
pip install qrcode[pil]。 - 编写代码。
import qrcode
# 生成二维码
img = qrcode.make('https://example.com')
# 保存为图片
img.save('qrcode.png')
运行后生成的图片可用微信等工具扫描查看内容。
操作 Excel
读取 Excel 表格数据常用 xlrd 模块,修改数据常用 xlwt 模块。此处以读取为例。
需求:读取 d:/test.xlsx,计算 100 班同学的平均分。
步骤:
- 安装指定版本:
pip install xlrd==1.2.0(注意版本差异)。 - 打开工作簿,获取指定 Sheet。
- 遍历行数据,提取班级和成绩字段进行计算。
import xlrd
# 打开文件
xlsx = xlrd.open_workbook('d:/test.xlsx')
# 获取第一个 Sheet
table = xlsx.sheet_by_index(0)
nrows = table.nrows
total = 0
count = 0
# 从第 1 行开始遍历(假设第 0 行为表头)
for i in range(1, nrows):
class_id = table.cell_value(i, 1)
score = table.cell_value(i, 2)
if class_id == 100:
total += score
count += 1
if count > 0:
print(f'平均分:{total / count}')
else:
print('未找到符合条件的数据')
通过这种方式,我们可以灵活处理复杂的表格逻辑,而不仅仅依赖 Excel 自身的公式功能。


