这些Python库,简直是”偷懒”界的诺贝尔奖得主!
程序员有句老话:懒惰是第一生产力。这话听着像是在找借口,但你仔细琢磨,好像还真有那么点道理。那些让你少写代码、少加班的Python库,本质上就是把”偷懒”这件事做到了极致。今天聊几个我用了就回不去的库,它们能把原本要写几十行的活儿,压缩成一两行搞定。
Pandas:数据处理的瑞士军刀
处理表格数据这事儿,以前是真的头疼。读个CSV文件,要写循环;筛选数据,又要写循环;做个汇总统计,还是循环。代码写得人眼花,还容易出bug。
Pandas的出现直接把这些活儿都接管了。核心就两个东西:Series和DataFrame。你可以把DataFrame理解成一张Excel表格,但它比Excel聪明多了。
importpandasaspd
# 一行代码读取文件
df = pd.read_csv('员工信息.csv')
# 筛选年龄大于30的员工
result = df[df['年龄'] > 30]
# 按部门统计平均工资
avg_salary = df.groupby('部门')['工资'].mean()
看到没?三行代码干了以前三十行的事情。那个groupby尤其好用,以前手写分组逻辑能把人写崩溃,现在一行搞定。
温馨提示:新手常犯一个错,就是用df['列名'] = 30想着筛选,结果把整列数据都改成30了。筛选要用双层中括号或者.loc,别搞混了。
Requests:发请求跟说话一样简单
Python标准库里那个urllib,用过的人都知道有多别扭。光是发个GET请求,就要写一堆让人看不懂的代码。
Requests库的口号是”HTTP for Humans”,翻译过来就是”给人用的HTTP库”。这名字起得相当自信,但人家确实有这个底气。
importrequests
# 发送GET请求
response = requests.get('https://api.example.com/users')
# 拿到JSON数据
data = response.json()
# 发送POST请求带参数
result = requests.post('https://api.example.com/login',
data={'username': 'admin', 'password': '123456'})
就这么简单。想带Cookie?用Session对象自动管理。想设置超时?加个timeout参数。写爬虫、调接口,基本离不开这玩意儿。
我见过有人为了”学习底层原理”坚持用urllib写了个爬虫项目,写完之后他说再也不想碰urllib了。有些苦没必要吃。
FastAPI:自动挡的Web框架
写后端API有个烦人的事儿,就是要处理参数校验。用户传过来的数据五花八门,你得一个个检查:这个字段是不是必填的?那个字段类型对不对?检查完还得写文档告诉前端怎么调用……
FastAPI把这些破事儿都自动化了。你只要声明好参数类型,框架自己就会校验。
fromfastapiimport FastAPI
frompydanticimport BaseModel
app = FastAPI()
classUser(BaseModel):
name: str
age: int
email: str
@app.post("/users/")
defcreate_user(user: User):
return {"message": f"用户{user.name}创建成功"}
这段代码做了三件事:接收JSON数据、自动校验类型、返回结果。如果前端传的age是个字符串,FastAPI会自动返回错误信息,你连判断都不用写。
更绝的是,它还自动生成API文档。启动服务后访问/docs路径,一份可交互的Swagger文档就出来了,前端同事看了直呼内行。
温馨提示:FastAPI底层用的是Pydantic做数据校验,这两个库经常一起出现。面试时候问到FastAPI,八成会顺带问Pydantic,记得一块儿看看。
Typer:命令行工具的福音
写个Python脚本,想让它支持命令行参数,传统做法是用argparse。那个库功能是够用,但写起来真的啰嗦,定义一个参数要好几行。
Typer用了个讨巧的办法:直接利用Python的类型提示来生成命令行界面。
importtyper

defmain(name: str, count: int = 1, uppercase: bool = False):
"""打招呼的小工具"""
greeting = f"你好, {name}!" * count
if uppercase:
greeting = greeting.upper()
print(greeting)
if __name__ == "__main__":
typer.run(main)
就这么点代码,已经支持了--name、--count、--uppercase这些参数,还自动生成了帮助信息。你在终端敲python main.py --help,会看到一份漂亮的使用说明,连函数的docstring都给你用上了。
以前写个像样的CLI工具要折腾半天,现在十分钟能搞定,剩下的时间摸鱼不香吗?
一个容易踩的坑
这些库虽然好用,但有个问题要注意:版本兼容性。
Pandas从1.x升级到2.x改了不少东西,老项目直接升级可能会炸。Requests倒是比较稳,但也遇到过SSL证书相关的坑。装库之前看一眼项目的Python版本要求和依赖关系,能省不少排错时间。
回过头看,这些库的共同点就是把重复劳动封装起来,让你只关心业务逻辑。有人说用库太多会变成”调包侠”,这话有一定道理,但也不能因噎废食。理解原理是一回事,干活效率是另一回事。会用Pandas不影响你理解数据结构,会用Requests也不妨碍你搞懂HTTP协议。
把节省下来的时间拿去学更深的东西,这才是真正的”偷懒”哲学。