page contents

写Python三年,我才知道这些函数还能这么用

干了三年Python,回头翻自己最早的代码,脸红得能烙饼。那时候写循环,老老实实建列表再append,后来发现列表推导式一行搞定,还能加个条件过滤。现在看新人还在用五行的循环写同样的事,我就想起当年的自己。这语言最磨人的地方在于,你总以为已经摸透了,换个场景才发现它还有别的脾气。

attachments-2026-09-mRBWr8Ne6a977db4938ad.png干了三年Python,回头翻自己最早的代码,脸红得能烙饼。那时候写循环,老老实实建列表再append,后来发现列表推导式一行搞定,还能加个条件过滤。现在看新人还在用五行的循环写同样的事,我就想起当年的自己。这语言最磨人的地方在于,你总以为已经摸透了,换个场景才发现它还有别的脾气。

拿enumerate说吧,新手都知道它能在循环里拿索引。可我见过有人遍历字典时非要再单开一个计数器,绕一大圈。这函数其实还能接受第二个参数,指定起始数字,写报表序号的时候特别省事。另一个冷门用法是在嵌套循环里,它能同时解包两个列表,一个enumerate套着zip,代码短得让人怀疑语法没写错。关键是这种写法读起来顺,不用来回数下标。

zip这个函数,多数人拿它拼两个列表成元组对,用完就扔,没人管它更深的用处。它还能做矩阵转置,一个星号解包加zip,三行代码搞定原本要双层循环的事。我写过一次CSV数据按列处理,用不上pandas,就靠这招撑过去的。转置完了再zip一次就变回来,往返之间连个临时变量都不用留。

再说map和filter,有些人说列表推导式能替代它们,我同意八成。可当你要对数据做流水线操作,比如先过滤再映射,两层推导式写出来一大坨,换成map套filter,整个逻辑从头到尾顺着一行读下来。更别提map能同时接受多个迭代对象,推导式做这个就费劲。我处理过两个时间序列对齐,一个多map全搞定,当时第一次觉得这函数设计得真够细。

格式化字符串那块,f-string出来之后大家都觉得到顶了。可很多人不知道str.format还有按属性访问的本事,直接传一个对象进去,里面对应字段自动填上,写报告文案时能用上。另一个用得多的是repr和str的区别,调试时打印一个带引号的字符串,省得自己猜变量里有没有多余空格。

exec和eval平时不碰,但写配置脚本的时候,让用户填一段函数代码进去,eval一行就能执行。我做过一个小工具,用户写个lambda放进配置文件,程序运行时动态算出阈值,省了我重写几十行的分支逻辑。里面的坑也明显,不安全,别碰网络传进来的东西,可内部工具上足够方便了。

再说一个可能最容易被忽略的,装饰器对带参数的函数做缓存。手动写LRU缓存也就几十行,但标准库里functools.lru_cache一行就够。我早年写过重复计算斐波那契的递归,慢得吓人,后来知道这装饰器,直接加上参数,速度翻了上千倍。现在看同事写的递归调用没有缓存,忍不住想提醒一句,又怕人家嫌我啰嗦。

还有yield,不光能生成无限序列,还能做协程,收发数据。我写过多级管道处理日志,每级一个生成器,拉一条数据流,内存占用从头到尾固定。当时同事用列表存储全部日志再遍历,机器差点卡死,换了我这版,顺畅得没声音。生成器的好处就是懒加载,推着走,不拖家带口占内存。

学Python最妙的地方就在这,每个函数都像多面手,平时只见一面,关键时刻另换一招。你写三年,不敢说全摸透,但每多知道一个用法,手头的代码就短一行,思路就顺一分。回头看看最初那些笨拙的循环和临时变量,其实都是必经之路。踩过坑,才会回头找更好的路。

现在写代码,我习惯先停下来想三十秒,这功能是不是有个现成的工具函数。翻标准库文档比查论坛答案靠谱,文档里冷门参数往往藏着正解。时间长了,形成肌肉记忆,敲代码的速度没变,错误率低了,调试时间短了,这大概就是经验的价值。

别觉得这些都是小技巧,关键时刻能救命。上个月线上数据漏了一列,我靠zip转置加一个filter,两行代码把问题揪出来,没停机没回滚。旁边同事看得一愣一愣,问我哪学来的,我说多翻文档多试,没什么捷径。

编程这条路,写三年算刚进门,门后头东西多着呢,够玩很久。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

 

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2372 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. Pack 2372 文章
  3. 小柒 2228 文章
  4. Nen 576 文章
  5. 王昭君 216 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章