Blue Flower

流畅的Python2017年5月由人民邮电出版社出版发行,是一本口碑非常好的Python方面的书籍。Python是一门既容易上手又强大的编程语言。本书致力于帮助Python开发人员挖掘这门语言及相关程序库的优秀特性,避免重复劳动,同时写出简洁、流畅、易读、易维护,并且具有地道Python风格的代码。流畅的Python尤其深入探讨了Python语言的高级用法,涵盖数据结构、Python风格的对象、并行与并发,以及元编程等不同的方面。知识兔小编分享的这本书的目标读者是那些使用Python,又想熟悉Python3的程序员。
流畅的Python

作者/译者介绍:

知识兔Luciano.Ramalho,从1998年起就成为了Python程序员。他是Python软件基金会的成员,Python.pro.br(巴西的一家培训公司)的共同所有者,还是巴西众创空间Garoa.Hacker.Clube的联合创始人。他领导过多个软件开发团队,还在巴西的媒体、银行和政府部门教授Python课程。
安道,专注于现代计算机技术的自由翻译,译有《Flask Web 开发》《Python 网络编程攻略》《Ruby on Rails 教程》等书。
吴珂,现为Airbnb公司软件工程师,所在团队主要负责开发和维护各类可伸缩、高性能服务,并在Airbnb内推广面向服务的系统架构。在分布式系统、云存储服务和跨平台SDK开发,以及大规模数据处理等方面有多年经验。

精彩书评:

知识兔“很荣幸担任这本优秀图书的技术审校。这本书能帮助很多中级Python程序员掌握这门语言,我也从中学到了相当多的知识!”
——Alex Martelli,Python软件基金会成员
“对于想要扩充知识的中级和高级Python程序员来说,这本书是充满了实用编程技巧的宝藏。”
——Daniel和Audrey Roy Greenfeld,Two Scoops of Django作者

流畅的Python目录:

知识兔前言  xvii
第一部分 序幕
第1章 Python 数据模型2
1.1 一摞 Python 风格的纸牌3
1.2 如何使用特殊方法6
1.2.1 模拟数值类型7
1.2.2 字符串表示形式9
1.2.3 算术运算符10
1.2.4 自定义的布尔值10
1.3 特殊方法一览10
1.4 为什么 len 不是普通方法12
1.5 本章小结12
1.6 延伸阅读13
第二部分 数据结构
第2章 序列构成的数组16
2.1 内置序列类型概览17
2.2 列表推导和生成器表达式18
2.3 元组不仅仅是不可变的列表22
2.4 切片28
2.5 对序列使用 + 和 *31
2.6 序列的增量赋值33
2.7  list.sort 方法和内置函数 sorted36
2.8 用 bisect 来管理已排序的序列37
2.9 当列表不是首选时41
2.10 本章小结49
2.11 延伸阅读50
第3章 字典和集合54
3.1 泛映射类型54
3.2 字典推导56
3.3 常见的映射方法57
3.4 映射的弹性键查询61
3.5 字典的变种65
3.6 子类化 UserDict65
3.7 不可变映射类型67
3.8 集合论68
3.9  dict 和 set 的背后73
3.10 本章小结80
3.11 延伸阅读81
第4章 文本和字节序列83
4.1 字符问题84
4.2 字节概要85
4.3 基本的编解码器88
4.4 了解编解码问题89
4.5 处理文本文件94
4.6 为了正确比较而规范化 Unicode 字符串99
4.7 Unicode 文本排序105
4.8 Unicode 数据库108
4.9 支持字符串和字节序列的双模式 API109
4.10 本章小结112
4.11 延伸阅读113
第三部分 把函数视作对象
第5章 一等函数118
5.1 把函数视作对象119
5.2 高阶函数120
5.3 匿名函数122
5.4 可调用对象122
5.5 用户定义的可调用类型123
5.6 函数内省124
5.7 从定位参数到仅限关键字参数126
5.8 获取关于参数的信息127
5.9 函数注解131
5.10 支持函数式编程的包132
5.11 本章小结137
5.12 延伸阅读137
第6章 使用一等函数实现设计模式141
6.1 案例分析:重构“策略”模式142
6.2 “命令”模式150
6.3 本章小结151
6.4 延伸阅读152
第7章 函数装饰器和闭包154
7.1 装饰器基础知识155
7.2 Python 何时执行装饰器156
7.3 使用装饰器改进“策略”模式157
7.4 变量作用域规则159
7.5 闭包161
7.6  nonlocal 声明164
7.7 实现一个简单的装饰器165
7.8 标准库中的装饰器168
7.9 叠放装饰器172
7.10 参数化装饰器173
7.11 本章小结177
7.12 延伸阅读178
第四部分 面向对象惯用法
第8章 对象引用、可变性和垃圾回收182
......
第9章 符合 Python 风格的对象205
......
第10章 序列的修改、散列和切片229
......
第11章 接口:从协议到抽象基类256
......
第12章 继承的优缺点289
......
第13章 正确重载运算符307
......
第五部分 控制流程
第14章 可迭代的对象、迭代器和生成器330
......
第15章 上下文管理器和 else 块368
......
第16章 协程381
......
第17章 使用期物处理并发416
......
第18章 使用 asyncio 包处理并发442
......
第六部分 元编程
第19章 动态属性和特性482
......
第20章 属性描述符514
......
第21章 类元编程538
......
结语560附录 A 辅助脚本563
Python 术语表588
作者简介600
关于封面600
202210300651133926250001

前言/序言:

知识兔......
要不这样吧,如果编程语言里有个地方你弄不明白,而正好又有个人用了这个功能,那就开枪把他打死。这比学习新特性要容易些,然后过不了多久,那些活下来的程序员就会开始用0.9.6版的Python,而且他们只需要使用这个版本中易于理解的那一小部分就好了(眨眼)。
—— Tim Peters传奇的核心开发者,“Python之禅”作者
Python官方教程(https://docs.python.org/3/tutorial/)的开头是这样写的:“Python是一门既容易上手又强大的编程语言。”这句话本身并无大碍,但需要注意的是,正因为它既好学又好用,所以很多Python程序员只用到了其强大功能的一小部分。
只需要几个小时,经验丰富的程序员就能学会用Python写出实用的程序。然而随着这最初高产的几个小时变成数周甚至数月,在那些先入为主的编程语言的影响下,开发者们会慢慢地写出带着“口音”的Python代码。即便Python是你的初恋,也难逃此命运。因为在学校里,抑或是那些入门书上,教授者往往会有意避免只跟语言本身相关的特性。
另外,向那些已在其他语言领域里有了丰富经验的程序员介绍Python的时候,我还发现了一个问题:人们总是倾向于寻求自己熟悉的东西。受到其他语言的影响,你大概能猜到Python会支持正则表达式,然后就会去查阅文档。但是如果你从来没见过元组拆包(tuple unpacking),也没听过描述符(descriptor)这个概念,那么估计你也不会特地去搜索它们,然后就永远失去了使用这些Python独有的特性的机会。这也是本书试图解决的一个问题。
这本书并不是一本完备的Python使用手册,而是会强调Python作为编程语言独有的特性,这些特性或者是只有Python才具备的,或者是在其他大众语言里很少见的。Python语言核心以及它的一些库会是本书的重点。尽管Python的包索引现在已经有6万多个库了,而且其中很多都异常实用,但是我几乎不会提到Python标准库以外的包。
注1: 给comp.lang.python Usenet小组的留言,2002年12月23日,“Acrimony in c.l.p”(https://mail.python.org/pipermail/python-list/2002-December/147293.html)。
目标读者
本书的目标读者是那些正在使用Python,又想熟悉Python3的程序员。如果你懂Python2,但是想迁移到Python3.4或者更新的版本,也没问题。在写这本书的时候,大多数专业Python程序员用的还是Python2,因此如果书中出现来自Python 3 的特性,读者可能会感到陌生,我也会特别地做出解释。
然而,本书的主要目的是为了充分地展现Python3.4的魅力,因此我不会一字一句地说明如何让本书的代码在旧版本里正常运行。本书中的大多数例子稍做修改(甚至不用修改)就可以在Python2.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库应该会简单一些。最后,我认为在看过一些实际的案例之后,理解抽象会更轻松。
……

免责声明:

知识兔来源于网络,仅用于分享知识,学习和交流!请下载完在24小时内删除。
禁用于商业用途!如果您喜欢《流畅的Python》,请购买正版,谢谢合作。
爱学习,请到知识兔查找资源自行下载!

下载说明:

知识兔方法一:
1、下载并解压,得出pdf文件
2、如果打不开本文件,别着急,这时候请务必在知识兔选择一款阅读器下载哦
3、安装后,再打开解压得出的pdf文件
4、以上都完成后,接下来双击进行阅读就可以啦,朋友们开启你们的阅读之旅吧。
方法二:
1、可以在手机里下载知识兔中的阅读器和百度网盘
2、接下来直接将pdf传输到百度网盘
3、用阅读器打开即可阅读

下载体验

请输入密码查看内容!

如何获取密码?

 

点击下载