展开全部

主编推荐语

本书精选14个项目案例,60多个编程技巧与建议,助你实现Python编程从入门到工匠的跃迁。

内容简介

本书从工程实践角度出发,通过剖析核心知识、展示典型案例与总结实用技巧,帮助大家系统进阶Python,写好工程代码,做好实践项目。

本书共计13章,分为五大部分:变量与基础类型、语法结构、函数与装饰器、面向对象编程、总结与延伸,涵盖Python编程的方方面面。本书的写作方式别具一格,核心知识点都会通过三大板块来阐述:基础知识、案例故事、编程建议。

其中基础知识帮助大家快速回顾Python基础;案例故事由作者经历的编程项目与案例改编而来,兼具实战性与趣味性;编程建议以大家喜闻乐见的条目式知识点呈现,短小精悍,可直接应用于自己的编程实践中。

目录

  • 版权信息
  • 本书赞誉
  • 前言
  • 第1章 变量与注释
  • 1.1 基础知识
  • 1.1.1 变量常见用法
  • 1.1.2 给变量注明类型
  • 1.1.3 变量命名原则
  • 1.1.4 注释基础知识
  • 1.2 案例故事
  • 奇怪的冒泡排序算法
  • 1.3 编程建议
  • 1.3.1 保持变量的一致性
  • 1.3.2 变量定义尽量靠近使用
  • 1.3.3 定义临时变量提升可读性
  • 1.3.4 同一作用域内不要有太多变量
  • 1.3.5 能不定义变量就别定义
  • 1.3.6 不要使用 locals()
  • 1.3.7 空行也是一种“注释”
  • 1.3.8 先写注释,后写代码
  • 1.4 总结
  • 第2章 数值与字符串
  • 2.1 基础知识
  • 2.1.1 数值基础
  • 2.1.2 布尔值其实也是数字
  • 2.1.3 字符串常用操作
  • 2.1.4 不常用但特别好用的字符串方法
  • 2.1.5 字符串与字节串
  • 2.2 案例故事
  • 2.2.1 代码里的“密码”
  • 2.2.2 别轻易成为 SQL 语句“大师”
  • 2.3 编程建议
  • 2.3.1 不必预计算字面量表达式
  • 2.3.2 使用特殊数字:“无穷大”
  • 2.3.3 改善超长字符串的可读性
  • 2.3.4 别忘了以 r 开头的字符串内置方法
  • 2.3.5 不要害怕字符串拼接
  • 2.4 总结
  • 第3章 容器类型
  • 3.1 基础知识
  • 3.1.1 列表常用操作
  • 3.1.2 理解列表的可变性
  • 3.1.3 常用元组操作
  • 3.1.4 具名元组
  • 3.1.5 字典常用操作
  • 3.1.6 认识字典的有序性与无序性
  • 3.1.7 集合常用操作
  • 3.1.8 了解对象的可哈希性
  • 3.1.9 深拷贝与浅拷贝
  • 3.2 案例故事
  • 分析网站访问日志
  • 3.3 编程建议
  • 3.3.1 用按需返回替代容器
  • 3.3.2 了解容器的底层实现
  • 3.3.3 掌握如何快速合并字典
  • 3.3.4 使用有序字典去重
  • 3.3.5 别在遍历列表时同步修改
  • 3.3.6 编写推导式的两个“不要”
  • 3.3.7 让函数返回 NamedTuple
  • 3.4 总结
  • 第4章 条件分支控制流
  • 4.1 基础知识
  • 4.1.1 分支惯用写法
  • 4.1.2 修改对象的布尔值
  • 4.1.3 与 None 比较时使用 is 运算符
  • 4.2 案例故事
  • 消失的分支
  • 4.3 编程建议
  • 4.3.1 尽量避免多层分支嵌套
  • 4.3.2 别写太复杂的条件表达式
  • 4.3.3 尽量降低分支内代码的相似性
  • 4.3.4 使用“德摩根定律”
  • 4.3.5 使用 all()/any() 函数构建条件表达式
  • 4.3.6 留意 and 和 or 的运算优先级
  • 4.3.7 避开 or 运算符的陷阱
  • 4.4 总结
  • 第5章 异常与错误处理
  • 5.1 基础知识
  • 5.1.1 优先使用异常捕获
  • 5.1.2 try 语句常用知识
  • 5.1.3 抛出异常,而不是返回错误
  • 5.1.4 使用上下文管理器
  • 5.2 案例故事
  • 5.2.1 提前崩溃也挺好
  • 5.2.2 异常与抽象一致性
  • 5.3 编程建议
  • 5.3.1 不要随意忽略异常
  • 5.3.2 不要手动做数据校验
  • 5.3.3 抛出可区分的异常
  • 5.3.4 不要使用 assert 来检查参数合法性
  • 5.3.5 无须处理是最好的错误处理
  • 5.4 总结
  • 第6章 循环与可迭代对象
  • 6.1 基础知识
  • 6.1.1 迭代器与可迭代对象
  • 6.1.2 修饰可迭代对象优化循环
  • 6.1.3 使用 itertools 模块优化循环
  • 6.1.4 循环语句的 else 关键字
  • 6.2 案例故事
  • 数字统计任务
  • 6.3 编程建议
  • 6.3.1 中断嵌套循环的正确方式
  • 6.3.2 巧用 next() 函数
  • 6.3.3 当心已被耗尽的迭代器
  • 6.4 总结
  • 第7章 函数
  • 7.1 基础知识
  • 7.1.1 函数参数的常用技巧
  • 7.1.2 函数返回的常见模式
  • 7.1.3 常用函数模块:functools
  • 7.2 案例故事
  • 函数与状态
  • 7.3 编程建议
  • 7.3.1 别写太复杂的函数
  • 7.3.2 一个函数只包含一层抽象
  • 7.3.3 优先使用列表推导式
  • 7.3.4 你没有那么需要 lambda
  • 7.3.5 了解递归的局限性
  • 7.4 总结
  • 第8章 装饰器
  • 8.1 基础知识
  • 8.1.1 装饰器基础
  • 8.1.2 使用 functools.wraps() 修饰包装函数
  • 8.1.3 实现可选参数装饰器
  • 8.1.4 用类来实现装饰器(函数替换)
  • 8.1.5 用类来实现装饰器(实例替换)
  • 8.1.6 使用 wrapt 模块助力装饰器编写
  • 8.2 编程建议
  • 8.2.1 了解装饰器的本质优势
  • 8.2.2 使用类装饰器替代元类
  • 8.2.3 别弄混装饰器和装饰器模式
  • 8.2.4 浅装饰器,深实现
  • 8.3 总结
  • 第9章 面向对象编程
  • 9.1 基础知识
  • 9.1.1 类常用知识
  • 9.1.2 内置类方法装饰器
  • 9.1.3 鸭子类型及其局限性
  • 9.1.4 抽象类
  • 9.1.5 多重继承与 MRO
  • 9.1.6 其他知识
  • 9.2 案例故事
  • 继承是把双刃剑
  • 9.3 编程建议
  • 9.3.1 使用 __init_subclass__ 替代元类
  • 9.3.2 在分支中寻找多态的应用时机
  • 9.3.3 有序组织你的类方法
  • 9.3.4 函数搭配,干活不累
  • 9.4 总结
  • 第10章 面向对象设计原则(上)
  • 10.1 类型注解基础
  • 10.2 SRP:单一职责原则
  • 10.2.1 案例:一个简单的 Hacker News 爬虫
  • 10.2.2 违反 SRP 的坏处
  • 10.2.3 大类拆小类
  • 10.3 OCP:开放 - 关闭原则
  • 10.3.1 接受 OCP 的考验
  • 10.3.2 通过继承改造代码
  • 10.3.3 使用组合与依赖注入
  • 10.3.4 使用数据驱动
  • 10.4 总结
  • 第11章 面向对象设计原则(下)
  • 11.1 LSP:里式替换原则
  • 11.1.1 子类随意抛出异常
  • 11.1.2 子类随意调整方法参数与返回值
  • 11.1.3 基于隐式合约违反 LSP
  • 11.1.4 LSP 小结
  • 11.2 DIP:依赖倒置原则
  • 11.2.1 案例:按来源统计 Hacker News 条目数量
  • 11.2.2 为脚本编写单元测试
  • 11.2.3 实现 DIP
  • 11.2.4 倒置后的单元测试
  • 11.2.5 DIP 小结
  • 11.3 ISP:接口隔离原则
  • 11.3.1 案例:处理页面归档需求
  • 11.3.2 修改实体类
  • 11.3.3 违反 ISP
  • 11.3.4 分拆接口
  • 11.3.5 其他违反 ISP 的场景
  • 11.4 总结
  • 第12章 数据模型与描述符
  • 12.1 基础知识
  • 12.1.1 字符串魔法方法
  • 12.1.2 比较运算符重载
  • 12.1.3 描述符
  • 12.2 案例故事
  • 处理旅游数据的三种方案
  • 12.3 编程建议
  • 12.3.1 认识 __hash__ 的危险性
  • 12.3.2 数据模型不是“躺赢”之道
  • 12.3.3 不要依赖 __del__ 方法
  • 12.4 总结
  • 第13章 开发大型项目
  • 13.1 常用工具介绍
  • 13.1.1 flake8
  • 13.1.2 isort
  • 13.1.3 black
  • 13.1.4 pre-commit
  • 13.1.5 mypy
  • 13.2 单元测试简介
  • 13.2.1 unittest
  • 13.2.2 pytest
  • 13.3 有关单元测试的建议
  • 13.3.1 写单元测试不是浪费时间
  • 13.3.2 不要总想着“补”测试
  • 13.3.3 难测试的代码就是烂代码
  • 13.3.4 像应用代码一样对待测试代码
  • 13.3.5 避免教条主义
  • 13.4 总结
  • 结语
  • 作者简介
展开全部

评分及书评

4.7
11个评分
  • 用户头像
    给这本书评了
    5.0

    学习后,对于自己的项目有很大提升和改造

      转发
      评论
      用户头像
      给这本书评了
      5.0
      进阶好书

      给了很多实用建议 以前学习模棱两可的地方都能得到启发

        转发
        评论

      出版方

      人民邮电出版社

      人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。