piglei
《Python 工匠》
Blog
About
More on piglei.com
English
Feed
Python 的 OrderedDict 为什么有序?
一个双向链表和另一个字典 小结 有趣的细节 1. 对 weakref 的使用 2. 传入 object() 作为默认值 现在是 2025 年,网上已很少见到 Python 字典有序性的相关讨论。自从 Python 在 2018 年发布 3.7 版本,将“字典…
Read more
我看见的软件设计:胖瘦客户端
kubectl apply 的故事 客户端侧 apply 客户端侧 apply 的局限性 服务端侧 apply 小结 软件设计建议 1. 善用服务端功能零成本复用、变更实时触达的特点 2. 别让服务端因客户端的定制需求过载 烤肉店故事:如何调味? 识别服务端复杂度的过载…
Read more
程序员阅读清单:我喜欢的 100 篇技术文章(41-50)
清单 41. 《抽象泄露法则》 42. 《如何设计一个好的 API 及其重要性》 43. 《我构建软件的原则+实践“让无效状态不可表示”》 44. 《不,不是编译器的问题,从来都不是》 45. 《关于在除夕前一天换了一个洗衣机的故事》 46.《你的函数是什么颜色?》 47.…
Read more
程序员阅读清单:我喜欢的 100 篇技术文章(21-40)
清单 21. 《人生短暂》 22. 《有“产品意识”的软件工程师》 23. 《Python 的 range 不是迭代器》 24. 《有关 TLS/SSL 证书的一切》 25. 《让困难的事情变容易》 26. 《The Hiring Post》 27. 《13 年后,我如何用…
Read more
程序员阅读清单:我喜欢的 100 篇技术文章(1-20)
清单 1. 《开发者应学习的 10 件有关“学习”的事》 2. 《开发者如何管理自驱力》 3. 《用 Go 语言分析 10 亿行数据,从 95 秒到 1.96 秒》 4. 《在开发高质量软件上的花费值得吗?》 5. 《错误抽象》 6. 《谷歌技术写作课:编写有帮助的错误信息…
Read more
人人都能写英文博客
开始“英文写作”的契机 用 LLM 翻译初稿 用 DeepL Write 润色 推广你的文章 ❤️ 我喜欢这种创作模式 结语 时间过得很快,转眼间,2024 年的进度条已经走到了 50% 的位置。作为一名博主,我很惭愧 🥹,过去半年我只写了一篇新文章,算是相当低产。不过…
Read more
Code Review 时,曾被我忽视的 3 件重要小事
1. 命名 2. 指引性注释 3. 沟通方式 总结 Code Review(代码评审)是一种流行的软件开发实践。通过在代码合入主分支前引入人工评审,能有效促进成员间的知识交流,提升软件质量。 我以评审者的身份参与过大量代码评审。在评审一份代码时,有些事项长期处在我的关注…
Read more
软件开发小段子四则
1. 1 行代码与 20 行注释 piglei 说 2. 删掉注释 piglei 说 3. 微服务架构能力 piglei 说 4. 聪明的代码 piglei 说 人物说明: 大师:从事开发工作 20 年有余,精通各类编程语言,有着常人难以匹敌的软件工程…
Read more
使用 import-linter 让你的 Python 项目架构更整洁
import-linter 简介 在项目中引入 import-linter 修复依赖关系的常见方式 1. 合并与拆分模块 2. 依赖注入 添加类型注解 3. 简化依赖数据类型 4. 延迟提供函数实现 变种:简单的插件机制 5. 由配置文件驱动 6. 用事件驱动代替函…
Read more
答案在代码中:“实现需求”的双重含义
实现“石头、剪刀、布”游戏 改进“石头、剪刀、布” 相关扩展 良好的命名和结构 引入额外抽象 面向对象编程 领域驱动设计 结语 实现“石头、剪刀、布”游戏 一天,我在一个 Python 技术群里看到一段有意思的讨论。讨论始于这么一个需求: 题目:写代码模拟“石头、…
Read more
入行 14 年,我还是觉得编程很难
1. 写代码很简单,但写好代码很难 好代码还是很少 好代码有哪些要素? 写好代码的捷径 2. 编程的精髓是“创造” 3. 打造高效试错的环境至关重要 理想的编程体验≈“刷题” 4. 避开代码完美主义陷阱 5. 技术很重要,但“人”也许更重要 6. 求知若渴是好事,但…
Read more
ChatGPT 正在杀死编程里的乐趣
用 ChatGPT 编写程序 编程里的两类乐趣 1. “规划与设计” 2. “解决小谜题” ChatGPT 带来的变化 以《Hades》来类比编程 关于 ChatGPT 的一些疑问 ChatGPT 写的代码真有那么好吗? 不用 ChatGPT 不就完事了? 写在最后…
Read more
如果编程就是写作
1. 使用人称代词 2. 搭配使用长短句 3. 大段落与小段落 4. 统一叙事角度 5. 了解规则,打破规则 结语 很多人会把编程比作写作,比如《Thinking in Java》的作者 Bruce Eckel 就说:“程序员就是作家。”二者的确也有许多相似之处,好文章…
Read more
Python 工匠:语句、表达式和海象操作符
表达式的特点 海象操作符 1. 用于分支语句 2. 消除推导式中的重复 3. 捕获推导式的中间结果 4. 赋值表达式的限制 其他建议 1. “更紧凑”不等于“更好” 2. 宜少不宜多 让我们从两行最简单的 Python 代码开始。 >>> na…
Read more
Go 的几种函数传参模式
1. 普通传参 2. 使用参数结构体 3. 藏在可选参数里的陷阱 4. 引入指针类型支持可选 5. “函数式选项”模式 6. 使用接口实现“函数式选项” 问:应该优先使用“函数式选项”吗? 参考 1. 普通传参 Go 语言支持按顺序传入参数来调用函数,下面是一个示例函数…
Read more
设计服务端软件配置的 4 条建议
1. 最好不给配置也能用 1.1 预设合理的默认值 1.2 延迟部分配置项 2. 永远别默认“管理员密码” 3. 描述性文本格式优先 配置文件结构 4. 部分或完全支持环境变量 总结 在设计和开发服务端(后端)软件时,配置文件是一个绕不开的话题。 配置文件是一种…
Read more
用 Python 编程 13 年后,我把经验写成了 400 页的书
结缘 Python 为什么写这本书 推荐语 致谢 尾声 我写了一本 Python 语言的编程进阶书:《Python工匠:案例、技巧与工程实践》,本文是关于这本书背后的故事与一些致谢。 我一直觉得编程某种意义上是一门“手艺”,因为优雅而高效的代码,就如同完美的工艺品一样…
Read more
久等了,我的新书《Python工匠》开始预售
引子 “Python 工匠”的由来 图书简介 “这本书适合我吗?” 引子 2008 年末,北京奥运会刚刚结束后不久。我——一名计算机专业的大四学生,因为一位朋友的极力推荐,开始试着把 Python 作为自己的第一编程语言。大学毕业后,我顺利成为了一名 Python 程…
Read more
技术写作二三事:原创情结
2019 年的春节假期,我闲在家中,准备一次性刷完攒了大半年的“Python Weekly” 周报。在 6 月份的一封周报里,有一篇名为 “Python Idioms: Multiline Strings” 的文章,内容很精炼。前半部分先描述痛点:在 Python 中写多…
Read more
译:拥抱苦差事
原文:"Embrace the Grind" by Jacob 原文链接:https://jacobian.org/2021/apr/7/embrace-the-grind/ 我以前见过一种纸牌魔术,至今仍念念不忘。那魔术简单来说是这样的(为了清楚起见,我在这做了进一…
Read more
Previous