Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

"One Python Craftsman" is a collection of articles on how to write better python codes.

License

Notifications You must be signed in to change notification settings

dfwe2015/one-python-craftsman

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

44 Commits

Repository files navigation

『Python 工匠』是什么?

我一直觉得编程某种意义上是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目。

在雕琢代码的过程中,有大工程:比如应该用什么架构、哪种设计模式。也有更多的小细节,比如何时使用异常(Exceptions)、或怎么给变量起名。那些真正优秀的代码,正是由无数优秀的细节造就的。

『Python 工匠』这个系列文章,是我的一次小小尝试。它专注于分享 Python 编程中的一些偏 『小』 的东西。希望能够帮到每一位编程路上的匠人。

文章列表

关注我的微信公众号,在第一时间阅读最新文章:

所有文章禁止转载,如需转载请通过微信公众号联系我。

详细内容

  • 如何为变量起名
    • 1 - 变量名要有描述性,不能太宽泛
    • 2 - 变量名最好让人能猜出类型
      • 『什么样的名字会被当成 bool 类型?』
      • 『什么样的名字会被当成 int/float 类型?』
      • 其他类型
    • 3 - 适当使用『匈牙利命名法』
    • 4 - 变量名尽量短,但是绝对不要太短
      • 使用短名字的例外情况
    • 5 - 其他注意事项
  • 更好的使用变量
    • 1 - 保持一致性
    • 2 - 尽量不要用 globals()/locals()
    • 3 - 变量定义尽量靠近使用
    • 4 - 合理使用 namedtuple/dict 来让函数返回多个值
    • 5 - 控制单个函数内的变量数量
    • 6 - 及时删掉那些没用的变量
    • 7 - 能不定义变量就不定义
  • 结语
  • 最佳实践
    • 1 - 避免多层分支嵌套
    • 2 - 封装那些过于复杂的逻辑判断
    • 3 - 留意不同分支下的重复代码
    • 4 - 谨慎使用三元表达式
  • 常见技巧
    • 1 - 使用"德摩根定律"
    • 2 - 自定义对象的"布尔真假"
    • 3 - 在条件判断中使用 all() / any()
    • 4 - 使用 try/while/for 中 else 分支
  • 常见陷阱
    • 1 - 与 None 值的比较
    • 2 - 留意 and 和 or 的运算优先级
  • 结语
  • 注解
  • 最佳实践
    • 1 - 少写数字字面量
      • 使用 enum 枚举类型改善代码
    • 2 - 别在裸字符串处理上走太远
    • 3 - 不必预计算字面量表达式
  • 实用技巧
    • 1 - 布尔值其实也是"数字"
    • 2 - 改善超长字符串的可读性
      • 当多级缩进里出现多行字符串时
    • 3 - 别忘了那些 "r" 开头的内建字符串函数
    • 4 - 使用"无穷大" float("inf")
  • 常见误区
    • 1 - "value += 1" 并非线程安全
    • 2 - 字符串拼接并不慢
  • 结语
  • 底层看容器
    • 写更快的代码
      • 1 - 避免频繁扩充列表/创建新列表
      • 2 - 在列表头部操作多的场景使用 deque 模块
      • 3 - 使用集合/字典来判断成员是否存在
  • 高层看容器
    • 写扩展性更好的代码
      • 面向容器接口编程
  • 常用技巧
    • 1 - 使用元组改善分支代码
    • 2 - 在更多地方使用动态解包
    • 3 - 最好不用"获取许可",也无需"要求原谅"
    • 4 - 使用 next() 函数
    • 5 - 使用有序字典来去重
  • 常见误区
    • 1 - 当心那些已经枯竭的迭代器
    • 2 - 别在循环体内修改被迭代对象
  • 总结
  • 系列其他文章
  • 注解
  • 编程建议
    • 1 - 单个函数不要返回多种类型
    • 2 - 使用 partial 构造新函数
    • 3 - 抛出异常,而不是返回结果与错误
    • 4 - 谨慎使用 None 返回值
      • 1 - 作为操作类函数的默认返回值
      • 2 - 作为某些"意料之中"的可能没有的值
      • 3 - 作为调用失败时代表"错误结果"的值
    • 5 - 合理使用"空对象模式"
    • 6 - 使用生成器函数代替返回列表
    • 7 - 限制递归的使用
  • 总结
  • 附录
  • 前言
  • 三个好习惯
    • 1 - 只做最精确的异常捕获
    • 2 - 别让异常破坏抽象一致性
    • 3 - 异常处理不应该喧宾夺主
  • 总结
  • 附录
  • 前言
  • 什么是"地道"的循环?
    • enumerate() 所代表的编程思路
  • 建议1:使用函数修饰被迭代对象来优化循环
    • 1 - 使用 product 扁平化多层嵌套循环
    • 2 - 使用 islice 实现循环内隔行处理
    • 3 - 使用 takewhile 替代 break 语句
    • 4 - 使用生成器编写自己的修饰函数
  • 建议2:按职责拆解循环体内复杂代码块
    • 复杂循环体如何应对新需求
    • 使用生成器函数解耦循环体
  • 总结
  • 附录

About

"One Python Craftsman" is a collection of articles on how to write better python codes.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /