📚读书笔记:python工匠

type
status
date
slug
summary
tags
category
icon
password

书籍信息

书名:Python 工匠
作者:朱雷
状态:阅读中
简介:从案例、技巧、工程实践让你再一次认识 Python。

思维导图

用思维导图,结构化记录本书的核心观点。
notion image

读后感

观点1

作者说了很多放之四海而皆准的原则,不要只局限在 python 。

观点2

除了阅读,关键还是要用于实践。

书摘

第一章:变量与注释

Sphinx格式文档注释法,类型注解法

遵从 PEP8 原则

先写注释再写代码

“在协助一句有说服力的注释前,别写任何函数代码”

第二章:数值与字符串

  1. python 的浮点数计算精度有些问题,如果要使用确定的精度,可以引入 demicial.Demicial(str s) 函数;
  1. 字符串拼接,除了 format 还有 f-string 法(python 3.6 之后引入);
  1. 对于确定的结构 ,使用 partition 代替 split;使用 translate 代替 replace;
  1. 二进制字符串要经过解码(decode)才能被人类看懂,普通字符串要经过编码(encode)才能被计算机识别;
  1. 使用常量和枚举代替字面量;使用 SQLAlchemy 操作数据库;使用 Jinja2 模板处理字符串;
  1. 使用 dis 模块可以对 python 进行反汇编;使用 timeit 可以方便的做性能测试;
  1. 使用 + 拼接字符串并不会拖慢速度,python 进化速度很快;

第三章:容器类型

主要介绍字典,列表,集合,元组这些东西和特别的操作。

第四章:条件分支控制流

提前返回,and 优先级比 or 高,bisect 优化分支判断,使用 any 或者 all 类精简表达式

第五章:异常处理

异常没有什么,但是过于模糊的异常是不可取的,需要精准捕获。在设计 API 时,需要返回方便查阅的信息来代替错误,比如 404,301 等

第六章:循环和可迭代

可迭代对象包含 __iter__ 和 __next__ 方法;在处理大文件读取时,注意内存消耗;

第七章:函数

提前返回,不要太长,慎用全局变量,多用 map 和 filter 的推导式;用循环代替递归

第八章:装饰器

装饰器的用法,原理;使用 wrapt 模块;装饰器设计技巧;

第九章:面向对象编程

与其他语言类似。

第十章:面向对象设计原则(上)

SOLID 原则:SRP 单一职责;OCP 开发-关闭原则;

第十一章:面向对象设计原则(下)

SOLID 原则:LSP 里式替换原则;DIP 依赖倒置原则;ISP 接口隔离原则;

第十二章:数据模型与描述符

了解数据模型知识,写出更 Python 风格的代码,但是不要迷信数据模型。

第十三章:开发大型项目

notion image
  • 格式检查:flake8,isort,black;
  • pre-commit 的 Git 钩子;
  • mypy 静态类型检查;
  • unittest,pytest
  • 对待测试的正确态度
读书笔记:hello小崔的知乎专栏读书笔记:rust圣经