2018年的写法,2024年的机器,中间隔的不是6年,是整整一个时代。Fozia Saleem在Medium上写自己那段经历:脚本跑起来,她去煮咖啡,回来还在转圈,再一看20分钟过去了。这种场景很多人熟悉,但解法早就变了。

她列了5个"后悔没早学"的技巧。第一个是生成器表达式——把列表推导式的方括号换成圆括号,内存占用从GB级降到字节级。第二个是functools.lru_cache,给递归函数加个装饰器,斐波那契数列的计算时间从指数级变成常数级。这些不是新功能,Python 3.2就有了,只是文档没告诉你什么时候该用。

第三个技巧更隐蔽:用pathlib替代os.path。她写「我花了三年还在写os.path.join,直到同事看我的眼神像在看考古学家」。标准库2008年就埋下了这个伏笔,但Stack Overflow的老答案至今还在复制粘贴旧代码。

第四个是f-string的调试语法,Python 3.8加入的{f'{var=}'},打印变量名和值一步到位。最后一个她放在压轴:用pytest的parametrize写测试,20行代码覆盖80个用例,之前她复制粘贴了80遍。

评论区有人补刀:这些技巧平均已经存在了7年,但教程永远在教print调试和for循环。Saleem的脚本现在跑完只要12秒,咖啡还没煮好。