《Python 3学习笔记(上卷)》

《Python 3学习笔记(上卷)》

雨痕 著

2018年1月出版点击此处参与抽奖,选取1 名同学获赠此书,2月13日自动开奖,年后邮寄。

内容简介

经过9 年的发展,Python 3 生态已相当成熟。无论是语言进化、解释器性能提升,还是第三方支持,都是如此。随着Python 2.7 EOF 日趋临近,迁移到Python 3 的各种障碍也被逐一剔除。是时候在新环境下学习或工作了。

人们常说Python 简单易学,但这是以封装和隐藏复杂体系为代价的。仅阅读语言规范很难深入,亦无从发挥其应有能力,易学难精才是常态。本书尝试通过分析解释器的工作机制来解析Python 3.6 语言理论,以期帮助读者加深理解。

本书着重于剖析语言的相关背景和实现方式,适合有一定Python 编程基础的读者阅读、参考。

作译者简介

雨痕

自 1996 年从事计算机软件开发工作以来,已 20 春秋。期间供职于北大方正、西单电子商务、九城数码、知乎等公司。主要从事核心开发、架构设计,以及部分管理工作。

前言节摘

写作本书时,我已然摆脱“萌新”身份,算是稍有经验的作者。可即便如此,我依然无法保证本书的内容完全正确,且满足所有人的胃口。显然,这不可能做到。

在我看来,图书大抵分两类:学习和研究。学习类书籍满足日常学习和提升需要,用简练的语言把问题说清楚。最关键的是有清晰的线索,把散乱的知识串联起来,学习者可据此了解前因后果。至于研究类图书或论文,则应摆脱基础,摆脱语法,重点关注算法、架构、性能,乃至内部实现。所有这些,均以思想为支撑,超脱语言窠臼,构建并完善体系。

不同于写散文或小说,技术类图书的文字不好组织。自然语言易阅读,但不便描述有复杂流程分支的逻辑,易导致歧义。更何况,这其中还有各种转译带来的麻烦。故技术类图书应以自然语言开宗明义,阐述理论与规则,随后用代码对这段文字进行解释,毕竟代码先天有描述逻辑的优势。

很多书,尤其是英文版的图书,习惯于用大量篇幅对代码示例做各种讲解。我感觉这有些啰唆,想必很少有人去读第二遍,大家最多也就是用记号笔画出重点而已。既然如此,我们为何不信读者能阅读并理解这些代码呢?这本来就是程序员吃饭的本钱,最多在关键位置辅以注释便可。当然,阅读前提怕是要设定为非入门读者。好在我一再强调自己写的是第二本书,或曰“闲书”。

在本书中,对于理论层面,我会尝试说得明白些。当然,书中还会引入一些类比,这些类比或许不是非常合适,但却可以加深读者对相关问题的理解,毕竟不是所有人都能明白那些云里雾里的抽象理念。一如上面所言,文字与代码相辅相成,我们应静下心来用代码去验证文字背后的含义。在我眼里,代码也是一种自然语言,缩排跳转仿若图形,本就是最好的笔记注释。起码它离机器语言上有些距离,是为了便于人类阅读而发明的。

无论我说得多悦耳动听,这终归只是一本学习笔记,算不上专业,仅适合读者闲暇时翻阅一二。

关于本书

全套书分为上下两卷。上卷以语言为主,基本涵盖语言相关内容,包括语法、测试、调试,乃至解释器等层面的基本知识。下卷计划以标准库、优秀扩展库、并发编程,以及架构设计展开,算是对上卷“闲书”稍加修正。

书中示例运行环境:macOS 10.12,CPython 3.6,IPython 6.2

鉴于不同运行环境的差异性,示例输出结果(尤其是id、内存地址等信息)会有所不同。另外,为阅读方便,本书对输出结果做了裁剪处理,请以实际运行结果为准。

读者定位

本书着重于剖析语言的相关背景和实现方式,适合有一定 Python 编程基础的读者(比如准备从Python 2.7升级到Python 3.6环境的读者)阅读。至于初学者,建议寻找从零开始、循序渐进地介绍如何编写代码的其他图书为佳。

雨 痕

二〇一七年,仲秋

本书目录

第1章 概述

第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 浮点数

2.2.3 字符串

2.2.4 字节数组

2.2.5 列表

2.2.6 字典

2.2.7 集合

第3章 表达式

3.1 词法

3.1.1 源文件

3.1.2 代码

3.2 赋值

3.2.1 增量赋值

3.2.2 序列解包

3.2.3 作用域

3.3 运算符

3.3.1 链式比较

3.3.2 切片

3.3.3 逻辑运算

3.4 控制流

3.4.1 选择

3.4.2 循环

3.5 推导式

第4章 函数

4.1 定义

4.2 参数

4.3 返回值

4.4 作用域

4.5 闭包

4.6 调用

第5章 迭代器

5.1 迭代器概述

5.2 生成器

5.3 模式

5.4 函数式编程

第6章 模块

6.1 定义

6.2 导入

6.2.1 搜索

6.2.2 编译

6.2.3 引用

6.3 包

6.3.1 初始化

6.3.2 相对导入

6.3.3 拆分

第7章 类

7.1 定义

7.2 字段

7.3 属性

7.4 方法

7.5 继承

7.5.1 统一类型

7.5.2 初始化

7.5.3 覆盖

7.5.4 多继承

7.5.5 抽象类

7.6 开放类

7.7 运算符重载

第8章 异常

8.1 异常概述

8.2 断言

8.3 上下文

第9章 元编程

9.1 装饰器

9.1.1 实现

9.1.2 应用

9.2 描述符

9.3 元类

9.3.1 自定义

9.3.2 应用

9.4 注解

第10章 进阶

10.1 解释器

10.1.1 字节码

10.1.2 全局锁

10.1.3 执行过程

10.1.4 内存分配

10.1.5 垃圾回收

10.2 扩展

10.2.1 ctypes

10.2.2 Cython

第11章 测试

11.1 单元测试

11.1.1 unittest

11.1.2 unittest.mock

11.1.3 coverage

11.2 性能测试

11.2.1 timeit

11.2.2 profile

11.2.3 line profiler

11.2.4 memory profiler

11.2.5 pympler

第12章 工具

12.1 调试器

12.2 包管理点击此处参与抽奖,选取1 名同学获赠此书,2月13日自动开奖,年后邮寄。

博文视点

您阅读的专业智库

喜欢请分享至朋友圈

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180206B0VSZU00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券