打开网易新闻 查看精彩图片
重构半年前写的脚本时,我突然不认识自己的代码了。循环嵌套像意大利面,条件判断层层堆叠,一个函数干五个人的活。那一刻我才明白:能跑通的代码和能维护的代码,完全是两回事。
我以为自己懂Python,其实只是懂"舒服区里的Python"。直到撞见这7个功能,逻辑变干净了,bug变少了,自动化脚本跑得飞快。第一个让我脸红的是match-case——Python 3.10才加入的模式匹配。以前处理状态码要叠三层if-elif,现在直接匹配结构和值,代码从"俄罗斯套娃"变成"平铺直叙"。
walrus运算符:=是另一个让我后知后觉的狠角色。while (line := file.readline()) != ""这种写法,把赋值和判断塞进一行,循环体终于不再臃肿。我用了五年Python才意识到,原来括号里可以顺便干活。
列表推导式我早就会,但生成器表达式?那是另一个物种。百万级数据处理时,[x for x in data]和(x for x in data)的区别,是内存爆炸和丝滑运行的差距。我之前的脚本差点把同事的笔记本风扇逼成直升机。
dataclass让我删掉了两百行__init__和__repr__。以前写个配置类要手动拼字符串,现在@dataclass装饰器一贴,Python自己把脏活干了。最讽刺的是,这个功能2017年就有了,我2024年才用上。
最后一个是functools.partial。回调函数传参总让我写一堆lambda x: func(a, b, x),现在partial(func, a, b)直接锁定前两个参数,代码从"绕口令"变成"大白话"。同事review时问我:这谁教的?我说Python文档第8章,躺了八年没人翻。
热门跟贴