Python 面试 · 工程与依赖
高频问法
- 虚拟环境为什么要用?
requirements.txt和锁版本?- 异常怎么设计?裸
except为什么不好? - 日志怎么打?
- 配置和密钥怎么管理?
- 脚本怎么做成可重复运行(幂等)?
口述参考
1)虚拟环境
每个项目独立依赖,避免全局包污染、「这台机器能跑那台不行」。python -m venv .venv 然后激活再 pip 安装。
2)依赖冻结
- 开发可
requirements.txt列主依赖 - 协作/生产最好有锁文件(pip freeze、poetry.lock、uv.lock)保证版本一致
- 区分主依赖与开发依赖(pytest 等)
3)异常
- 捕获具体异常(
Timeout、HTTPError),少用裸except: - 失败要日志 + 明确退出码或返回值
- 不要吞掉异常假装成功
4)日志
logging 模块:级别、时间、模块名;生产打到文件/stdout 给采集。
调试用 print 可以,交付脚本应换成 logger。
5)配置与密钥
- 环境变量或本地未提交的
.env(记得 gitignore) - 不同环境(本地/测试)配置分离
- API Key、数据库密码不进仓库、不进日志
6)幂等与可重跑
批处理脚本:用「已处理 id 表/文件」跳过;输出写临时文件再原子替换;支持 --dry-run。
面试一句:脚本也要能失败重跑,不能半成功不可恢复。
小checklist(口述收尾)
text
venv ✅ 依赖锁 ✅ timeout ✅ 日志 ✅ 密钥不进库 ✅ 可重跑 ✅