设为首页 加入收藏

TOP

python经典书籍必看:流畅的Python(一)
2019-03-24 18:08:32 】 浏览:431
Tags:python 经典 书籍 流畅 Python

作者:熊猫烧香

链接:www.pythonheidong.com/blog/article/26/

来源:python黑洞网

目标读者

本书的目标读者是那些正在使用 Python,又想熟悉 Python 3 的程序员。
如果你懂 Python 2,但是想迁移到 Python 3.4 或者更新的版本,也没问
题。在写这本书的时候,大多数专业 Python 程序员用的还是 Python 2,
因此如果书中出现来自 Python 3 的特性,读者可能会感到陌生,我也会
特别地做出解释。
然而,本书的主要目的是为了充分地展现 Python 3.4 的魅力,因此我不
会一字一句地说明如何让本书的代码在旧版本里正常运行。本书中的大
多数例子稍做修改(甚至不用修改)就可以在 Python 2.7 里面跑起来,
但是有些例子,如果追求向下兼容,就会需要大量的重写。
话虽如此,我还是认为,即便你无法从 Python 2.7 里脱身,这本书也会
对你很有帮助,因为 Pyhon 语言的核心概念是不会变的。Python 3 也不
是一门全新的语言,大多数的改动花一下午大概就能适应,官方文档
里“Python 3.0 的新特性”一节
(https://docs.python.org/3.0/whatsnew/3.0.html)就是很好的切入点。固
然,自 2009 年发布以来,Python 3.0 也在变化,但是这些变化比起
Python 3.0 和 Python 2.0 之间的区别,并没有那么重要。
如果你尚不清楚自己对 Python 的熟悉程度能否跟得上本书的内容,建议
你回头看看 Python 的官方教程。注意,除非是跟 Python 3 的新特性有
关,教程里的其他内容本书不会重复。

非目标读者

如果你才刚刚开始学 Python,本书的内容可能会显得有些“超纲”。比难
懂更糟的是,如果在学习 Python 的过程中过早接触本书的内容,你可能
会误以为所有的 Python 代码都应该利用特殊方法和元编程
(metaprogramming)技巧。我们知道,不成熟的抽象和过早的优化一
样,都会坏事。
本书的结构
如果你是本书的目标读者,那你应该可以从本书的任意一章开始阅读,
但是如果按照我写作时的构思来的话,本书一共分为六个独立的部分,
每个部分内的章节最好按照顺序来读。
在介绍让你自己实现某些功能的方法之前,我通常会先把现成可用的工
具讲清楚。比如说第二部分的第 2 章覆盖了序列类型(sequence
type),但是像 collections.deque 这种类可能就会一带而过。一直
到第四部分,我们才会看看如何从抽象基类(abstract base class,
ABC)中获利,抽象基类则被封装在 collections.abc 这个包里。如
果想创建自己的 ABC,你可能得看到第四部分的最后一些内容才行,
因为我一直觉得,如果没有熟练使用 ABC 的经验,贸然去实现一套自
己的东西是不合适的。

 


这样做有几个好处。第一,知道有什么现成的工具可用,能避免重新发
明轮子。毕竟我们使用现有集合类型(collection type)的概率要远大于
自己动手写一套新的。第二,这样一来,在讨论如何写新类型之前,我
们能够有更多的机会来了解这些现成类的高级用法。第三,比起从零开
始构建一个 ABC,继承已有的 ABC 库应该会简单一些。最后,我认为
在看过一些实际的案例之后,理解抽象会更轻松。
当然,这样也会带来一些不便之处,比如书里的向前引用就会分散在各
个不同的章节里面。但是经过上述这番梳理,我想这一点不便之处也是
可以容忍的。


下面是本书每一部分的主题。

第一部分

??第一部分只有单独的一章,讲解的是 Python 的数据模型(data
model),以及如何为了保证行为一致性而使用特殊方法(比如
__repr__),毕竟 Python 的一致性是出了名的。其实整本书几乎都是
在讲解 Python 的数据模型,第 1 章算是一个概览。

第二部分

??第二部分包含了各种集合类型:序列(sequence)、映射
(mapping)和集合(set),另外还提及了字符串(str)和字节序列
(bytes)的区分。说起来,最后这一点也是让亲者(Python 3 用户)
快,仇者(Python 2 用户)痛的一个关键,因为这个区分致使 Python 2
代码迁移到 Python 3 的难度陡增。第二部分的目标是帮助读者回忆起
Python 内置的类库,顺带解释这些类库的一些不太直观的地方。具体的
例子有 Python 3 如何在我们观察不到的地方对 dict 的键重新排序,或
者是排序有区域(locale)依赖的字符串时的注意事项。为了达到本部
分的目标,有些地方的讲解会比较大而全,像序列类型和映射类型的变
种就是这样;有时则会写得很深入,比方说我会对 dict 和 set 底层的
散列表进行深层次的讨论。

第三部分

??如何把函数作为一等对象(first-order object)来使用。第三部分首
先会解释前面这句话是什么意思,然后话题延伸到这个概念对那些被广
泛使用的设计模型的影响,最后读者会看到如何利用闭包(closure)的
概念来实现函数装饰器(function decorator)。这一部分的话题还包括
Python 的这些基本概念:可调用(callable)、函数属性(function
attribute)、内省(introspection)、参数注解(parameter annotation)和
Python 3 里新出现的 nonlocal 声明。

第四部分

??到了这里,书的重点转移到了类的构建上面。虽然在第二部分里的
例子里就有类声明(class declaration)的出现,但是第四部分会呈现更
多的类。和任何面向对象语言一样,Python 还有些自己的特性,这些特
性可能并不会出现在你我学习基于类的编程的语言中。这一部分的章节
解释了引用(reference)的原理、“可变性”的概念、实例的生命周期、
如何构建自定义的集合类型和 ABC、多重继承该怎么理顺、什么时候
应该使用操作符重载及其方法。

第五部分

??Python 中有些结构和库不再满足于诸如条件判断、循环和子程序
(subroutine)之类的顺序控制流程,第五部分的笔墨会集中在这些构造
和库上。我们会从生成器(generator)起步,然后话题会转移到上下文
管理器(context manager)和协程(coroutine),其中会涵盖新增的功能
强大但又不容易理解的 yield from 语法。这一部分以并发性和面向事
件的 I/O 来结尾,其中跟并发性相关的是 collections.futures 这个
很新的包,它借助 futures 包把线程和进程的概念给封装了起来;而
跟面向事件 I/O 相关的则是 asyncio,它的背后是基于协程和 yield
from 的 futures 包。

第六部分

??第六部分的开头会讲到如何动态创建带属性的类,用以处理诸如
JSON 这类半结构化的数据。然后会从大家已经熟悉的特性(property)
机制入手,用描述符从底层来解释 Python 对象属性的存取。同时,函
数、方法和描述符的关系也会被梳理一遍。第六部分会从头至尾地实现
一个字段验证器,在这个过程中我们会遇到一些微妙的问题,然后在最
后一章中就自然引出像类装饰器(class decorator)和元类(metaclass)
这些高级的概念。
以实践为基础
一般情况下,我们会用 Python 的交互式控制台来探索各种库和语言本

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇python基础测试题 下一篇关于pycharm中缩进、粘贴复制等文..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目