我见过太多人把Python当成万能胶水。他们从网上下载一坨代码,粘上另一个库,再拼一个框架,最后得到一个摇摇晃晃的程序。这东西跑起来像个醉汉,动不动就报错,没人敢动它,也没人能维护它。
有个学生找我诉苦,说他做了一个数据抓取工具。他用requests抓网页,用selenium处理登录,用scrapy做调度,用pandas分析数据,用matplotlib画图。听起来很全,实际上每个部分都像是临时抱佛脚拼出来的。requests那边不会处理异常,selenium那边浏览器版本对不上,scrapy的配置文件全是错的。最后他花了三天时间找bug,发现是三个库的编码方式不兼容。
Python确实容易把不同功能粘起来,但粘之前你得想清楚每个零件是干什么的。你不可能把一个汽车的轮胎装到飞机上,然后指望它飞起来。很多初学者看到别人用某个库解决了问题,就照搬过来。他们不看文档,不理清逻辑,不明白为什么要用这个库。结果代码里到处都是import,真正能跑的部分却很少。
我教过一个项目组,六个人一起写一个自动化报表系统。每个人负责一块,A用openpyxl处理Excel,B用xlwings操作Excel,C觉得xlrd更好,D干脆用pandas导出。等他们合并代码的时候,完全乱套了。同一个Excel文件被四个库打开,有些功能冲突,有些数据丢失。团队协作最忌讳的就是每个人都选自己顺手的工具,最后拼出一只缝合怪。
另一个常见问题是性能。有人写了个爬虫,把Scrapy、BeautifulSoup、Selenium、Tesseract全塞进去。每个步骤都加了新的库,每个库都带来新的依赖。程序启动先加载十几个包,等它真正开始工作,五分钟过去了。用户等不了,服务器也扛不住。更糟的是,某个库更新后接口变了,整个程序就废了。你粘的东西越多,牵一发而动全身的概率就越大。
有些开发者觉得Python的生态丰富,出了问题换个库就行。他们把代码写成拼图,今天用Django,明天换Flask,后天又想用FastAPI。每换一次,路由逻辑、数据库操作、模板引擎都得重写。看起来在升级,实际上是在原地打转。选好一个框架深入用下去,比换十个框架强一百倍。
我见过最离谱的例子,有人写了个数据分析脚本,里面同时用了numpy、pandas、scipy、statsmodels、sklearn。每个库只用了两三个函数,但导入它们花的时间比实际计算还长。最后他把脚本部署到服务器上,内存占用比预期的高三倍。运维同事跑来问,说你们的程序到底在干什么。用那么多库不一定说明你厉害,只能说明你懒。
真正的高手写代码,会先想清楚要解决什么问题。他们选一个最合适的库,把它的功能用透,实在不够再考虑加别的。他们不会为了用某个库而用,更不会把网上找来的代码直接粘贴进去。维护别人的代码时最痛苦的事就是看到一堆看不懂的库和不知来处的代码块。
如果你想用好Python,记住一点。粘胶水可以,但你要清楚自己粘的是什么。每加一个库,每引入一个依赖,都要能说清楚为什么用它。别让代码变成黑箱,也别让自己沦为代码的搬运工。胡乱粘东西的人,最后都会被自己粘住的代码牵扯住精力时间和前途。