Python学习手册(套装上下册)(原书第5版)pdf下载

Python学习手册(套装上下册)(原书第5版)百度网盘pdf下载

作者:
简介:Python学习手册(套装上下册)(原书第5版)
出版社:
出版时间:2018-11
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色

编辑推荐

适读人群 :无论你是零基础新手,还是有编程基础的程序员,想快速入门Python并达到可以开发实际项目的水平,本书都会是你的理想选择。

本书将帮助你使用Python编写出高质量、高效的并且易于与其他语言和工具集成的代码。

本书根据Python专家Mark Lutz的著名培训课程编写而成,是易于掌握和自学的Python教程。

本书每一章都对Python语言的关键内容做单独讲解,并且配有章后习题、编程练习及详尽的解答,还配有大量注释的示例以及图表,便于你学习新的技能并巩固加深自己的理解。

第5版基于3版本,同时也适用于Python2等其他版本。无论你是编程新手还是其他编程语言的资深开发者,本书都会是你学习Python的理想选择。

内容简介

本书将帮助你使用Python编写出高质量、高效的并且易于与其他语言和工具集成的代码。本书根据Python专家Mark Lutz的著名培训课程编写而成,是易于掌握和自学的Python教程。

本书每一章都对Python语言的关键内容做单独讲解,并且配有章后习题、编程练习及详尽的解答,还配有大量注释的示例以及图表,便于你学习新的技能并巩固加深自己的理解。第5版基于Python2.7和3.3版本,同时也适用于其他Python版本。无论你是编程新手还是其他编程语言的资深开发者,本书都会是你学习Python的理想选择。


本书主要内容:

* 学习Python的主要内置对象类型,如数字、列表和字典。

* 使用Python语句创建和处理对象,并学习Python的通用语法模型。

* 使用函数减少代码冗余,使用包代码结构实现代码重用。

* 学习Python模块,从而封装语句、函数和其他工具,以便构建大型组件。

* 学习类,即Python用于组织代码的面向对象编程工具。

* 使用Python的异常处理模型和开发工具编写大型程序。

* 学习高级Python工具,包括装饰符、描述符、元类和Unicode的处理等。


推荐阅读:


作者简介

Mark Lutz是一位世界知名的Python培训讲师。他是Python畅销书籍的作者,同时从1992年起就成为Python社区的先锋。Mark有着30余年的软件开发经验,也是《Python编程》《Python袖珍指南》等书的作者。


精彩书评

★“对于那些想要开始使用Python编程的朋友,本书是我所推荐图书中的优选。”

——Doug Hellmann

Racemi公司高级软件工程师


目录

上册

前言1

第一部分 使用入门

第1章 问答环节 21

人们为何使用Python..21

软件质量.22

开发者效率..23

Python是一门“脚本语言”吗 23

好吧,Python的缺点是什么...25

如今谁在使用Python..25

其他的Python设计权衡:一些难以把握的方面.....26

使用Python可以做些什么.28

系统编程.28

图形用户界面(GUI)....29

Internet脚本...29

组件集成.30

数据库编程..30

快速原型.31

数值计算和科学计算编程 31

更多内容:游戏、图像、数据挖掘、机器人、Excel等 .....31

Python如何开发并获得支持...32

开源的权衡..33

Python有哪些技术上的优点...33

面向对象和函数式....33

免费34

可移植..34

功能强大.35

可混合..36

相对简单易用36

相对简单易学37

以Monty Python命名.37

Python和其他语言比较起来怎么样 .....38

本章小结.....39

本章习题.....39

习题解答.....40

Python是工程,不是艺术 41


第2章 Python如何运行程序 ....43

Python解释器简介43

程序执行.....45

程序员的视角45

Python的视角46

执行模型的变体...48

Python的各种实现 ....49

执行优化工具52

冻结二进制文件..53

未来的可能性54

本章小结.....55

本章习题.....55

习题解答.....56

第3章 你应如何运行程序 ..57

交互式命令行模式57

开始一个交互式会话.57

Windows平台上的交互式命令行在哪里 ..59

系统路径.59

Python 3.3中的新Windows选项:PATH和启动器 ...60

运行的位置:代码目录...61

不需要输入的内容:提示符和注释 ...62

交互式地运行代码....63

为什么要使用交互式命令行模式 .64

使用注意:交互命令行模式 ..65

系统命令行和文件67

第一段脚本..68

使用命令行运行文件.69

不同的命令行使用方式...70

使用注意:命令行和文件 71

UNIX风格可执行脚本:#!.....72

UNIX脚本基础....72

UNIX env查找技巧...73

Python 3.3 Windows启动器:Windows也有#!了 ....73

点击文件图标.75

图标点击基础知识....75

在Windows上点击图标...76

Windows上输入的技巧...77

其他图标点击的限制.79

模块导入和重载...79

导入和重载基础知识.80

模块的宏观视角:属性...82

使用注意:import和reload .....85

使用exec运行模块文件.....85

IDLE用户界面86

IDLE启动细节.....87

IDLE基础用法.....88

IDLE功能特性.....89

高级IDLE工具.....90

使用注意:IDLE.90

其他IDE.92

其他启动选项.93

嵌入式调用..93

冻结二进制可执行文件...94

文本编辑器启动方式.94

其他的启动方式..95

未来的可能..95

应该选用哪种方式95

调试Python代码..96

本章小结.....97

本章习题.....97

习题解答.....98

第一部分练习题...99

第二部分 类型和运算

第4章 介绍Python对象类型 ..105

Python知识结构..105

为什么要使用内置类型..106

Python核心数据类型107

数字.....108

字符串. 110

序列操作..... 110

不可变性..... 112

特定类型的方法 113

寻求帮助..... 115

字符串编程的其他方式. 116

Unicode字符串 . 117

模式匹配..... 119

列表.....120

序列操作.....120

特定的操作121

边界检查.....121

嵌套....122

推导....122

字典.....125

映射操作.....125

重访嵌套.....126

不存在的键:if 测试.....128

键的排序:for 循环.129

迭代和优化131

元组.....132

为什么要使用元组..133

文件.....133

二进制字节文件134

Unicode文本文件....135

其他类文件工具137

其他核心类型.....137

如何破坏代码的灵活性.139

用户定义的类....140

剩余的内容141

本章小结...141

本章习题...141

习题解答...142


第5章 数值类型 ....143

数值类型基础知识....143

数值字面量144

内置数值工具....146

Python表达式运算符.....146

数字的实际应用.151

变量与基础表达式..151

数值的显示格式153

str和repr显示格式...154

普通比较与链式比较.....154

除法:经典除法、向下取整除法和真除法 .....156

整数精度.....160

复数....160

十六进制、八进制和二进制:字面量与转换 .161

按位操作.....163

其他内置数值工具..164

其他数值类型.....167

小数类型.....167

分数类型.....169

集合....173

布尔型180

数值扩展...181

本章小结...182

本章习题...182

习题解答...182

第6章 动态类型 ....184

缺少声明语句的情况184

变量、对象和引用..184

类型属于对象,而不是变量 186

对象的垃圾收集187

关于Python垃圾回收的更多讨论 .....188

共享引用...189

共享引用和在原位置修改 ....190

共享引用和相等192

动态类型随处可见....193

“弱”引用194

本章小结...194

本章习题...194

习题解答...195

第7章 字符串基础 .196

本章范围...196

Unicode简介197

字符串基础197

字符串字面量.....199

单引号和双引号字符串是一样的 .....200

转义序列代表特殊字符.200

原始字符串阻止转义.....203

三引号编写多行块字符串 ....205

实际应用中的字符串206

基本操作.....206

索引和分片207

请留意:分片.... 211

字符串转换工具212

修改字符串I214

字符串方法216

方法调用语法....216

字符串的方法....217

字符串方法示例:修改字符串II 218

字符串方法示例:解析文本 220

实际应用中的其他常见字符串方法 .220

原始string模块的函数(在Python 3.X中删除) ...221

字符串格式化表达式223

格式化表达式基础..224

高级格式化表达式语法.225

高级格式化表达式举例.226

基于字典的格式化表达式 ....227

字符串格式化方法调用..228

字符串格式化方法基础.228

添加键、属性和偏移量.229

高级格式化方法语法.....230

高级格式化方法举例.....231

与%格式化表达式比较233

为什么使用格式化方法.236

通用类型分类.....241

同一分类中的类型共享同一个操作集....241

可变类型能够在原位置修改 242

本章小结...242

本章习题...243

习题解答...243

第8章 列表与字典 .245

列表.....245

列表的实际应用.248

基本列表操作....248

列表迭代和推导248

索引、分片和矩阵..249

原位置修改列表250

字典.....256

字典的实际应用.258

字典的基本操作258

原位置修改字典259

其他字典方法....260

示例:电影数据库..262

字典用法注意事项..263

创建字典的其他方式.....267

请留意:字典vs列表.....268

Python 3.X和2.7中的字典变化 ...269

请留意:字典接口..276

本章小结...277

本章习题...277

习题解答...277

第9章 元组、文件与其他核心类型 .... 279

元组.....280

元组的实际应用281

为什么有了列表还要元组 ....283

重访记录:有名元组.....284

文件.....286

打开文件.....287

使用文件.....288

文件的实际应用289

文本和二进制文件:一个简要的故事....290

在文件中存储Python对象:转换 .....291

存储Python原生对象:pickle .....293

用JSON格式存储Python对象 .....294

存储打包二进制数据:struct .....296

文件上下文管理器..297

其他文件工具....297

核心类型复习与总结299

请留意:运算符重载.....300

对象灵活性300

引用vs复制..301

比较、等价性和真值.....303

Python中True和False的含义 307

Python的类型层次...309

类型的对象309

Python中的其他类型..... 311

内置类型陷阱..... 311

赋值创建引用,而不是复制311

重复会增加层次深度.....312

注意循环数据结构..313

不可变类型不可以在原位置改变 .....313

本章小结...314

本章习题...314

习题解答...315

第二部分练习题.315

第三部分 语句和语法

第10章 Python语句简介.321

重温Python的知识结构..321

Python的语句.....322

两种不同的if324

Python增加的元素...325

Python删除的元素...325

为什么采用缩进语法.....327

几种特殊情况....329

简短示例:交互式循环..331

一个简单的交互式循环.331

对用户输入做数学运算.333

通过测试输入数据来处理错误 ...334

用try语句处理错误..335

嵌套三层深的代码..337

本章小结...338

本章习题...338

习题解答...338


第11章 赋值、表达式和打印 340

赋值语句...340

赋值语句形式....341

序列赋值.....342

Python 3.X中的扩展序列解包 ....345

多目标赋值349

增量赋值.....350

变量命名规则....353

Python中的废弃协议.....355

表达式语句356

表达式语句和原位置修改 ....358

打印操作...358

Python 3.X的print函数..359

Python 2.X的print语句..362

打印流重定向....363

版本中立的打印367

为什么你要注意:print和stdout .369

本章小结...370

本章习题...370

习题解答...370

第12章 if测试和语法规则 .....372

if语句.372

一般形式.....372

基础示例.....373

多路分支.....373

复习Python语法规则375

代码块分隔符:缩进规则 ....377

语句分隔符:行与行间连接符 ...378

一些特殊情况....379

真值和布尔测试.381

if/else三元表达式.....383

请留意:布尔值384

本章小结...386

本章习题...386

习题解答...386


第13章 while循环和for循环 .. 387

while循环..387

一般形式.....387

示例....388

break、continue、pass和循环的else ..389

一般循环形式....389

pass.....389

continue.391

break...391

循环的else...392

请留意:仿真C 语言的while循环 ....393

for循环394

一般形式.....394

示例....395

请留意:文件扫描器.....400

编写循环的技巧.402

计数器循环:range.402

序列扫描:while和range vs for ..403

序列乱序器:range和len 404

非穷尽遍历:range vs分片 ..405

修改列表:range vs推导 406

并行遍历:zip和map.....407

同时给出偏移量和元素:enumerate 410

请留意:shell命令及其他 .... 411

本章小结...414

本章习题...414

习题解答...414

第14章 迭代和推导 .. 416

迭代器:初次探索....417

迭代协议:文件迭代器.417

手动迭代:iter和next....420

其他内置类型可迭代对象 ....423

列表推导:初次深入探索....425

列表推导基础....426

在文件上使用列表推导.427

扩展的列表推导语法.....428

其他迭代上下文.430

Python 3.X新增的可迭代对象 .....435

对Python 2.X版本代码的影响:利与弊 .435

range可迭代对象.....436

map、zip和filter可迭代对象 437

多遍迭代器vs单遍迭代器 ....439

字典视图可迭代对象.....440

其他迭代话题.....441

本章小结...442

本章习题...442

习题解答...442

第15章 文档 ...444

Python文档资源..444

#注释..445

dir函数..445

文档字符串:__doc__...447

PyDoc:help函数....450

PyDoc:HTML报告453

改变PyDoc的颜色...456

超越文档字符串:Sphinx ....461

标准手册集462

网络资源.....463

已出版的书籍....463

常见代码编写陷阱....463

本章小结...465

本章习题...466

习题解答...466

第三部分练习题.467

第四部分 函数和生成器

第16章 函数基础 ..473

为何使用函数.....474

编写函数...475

def语句..476

def语句执行于运行时...477

第一个示例:定义和调用....478

定义....478

调用....478

Python中的多态479

第二个示例:寻找序列的交集 ....480

定义....480

调用....481

重访多态.....482

局部变量.....482

本章小结...483

本章习题...483

习题解答...483

第17章 作用域 485

Python作用域基础....485

作用域细节486

变量名解析:LEGB规则 .....488

作用域实例490

内置作用域491

打破Python 2.X的小宇宙 .....494

global语句.494

程序设计:最少化全局变量 495

程序设计:最小化跨文件的修改 .....497

其他访问全局变量的方式 ....498

作用域和嵌套函数....499

嵌套作用域的细节..500

嵌套作用域举例500

工厂函数:闭包501

使用默认值参数来保存外层作用域的状态 .....503

Python 3.X中的nonlocal语句507

nonlocal基础.....508

nonlocal应用.....509

为什么选nonlocal?状态保持备选项511

nonlocal变量的状态:仅适用于Python 3.X .... 511

全局变量的状态:只有一份副本 .....512

类的状态:显式属性(预习) ...513

函数属性的状态:Python 3.X和Python 2.X的异同 ....514

请留意:定制open..516

本章小结...518

本章习题...518

习题解答...520

第18章 参数 ...521

参数传递基础.....521

参数和共享引用522

避免修改可变参数..524

模拟输出参数和多重结果 ....525

特殊的参数匹配模式526

参数匹配基础....526

参数匹配语法....527

更深入的细节....528

关键字参数和默认值参数的示例 .....529

可变长参数的实例..532

Python 3.X的keyword-only参数 .536

min提神小例.539

满分....540

附加分541

......

前言/序言

Python是一门强大的多范式计算机编程语言,它以程序员的多产、代码的可读及软件的高质量开发为目标而不断优化。

本书对Python语言本身进行了全面而深入的介绍。目标是帮助你在工作中真正使用Python之前,掌握Python的基本原理并做好充足的准备。秉承本书前四版的一贯思路,本书这一版同样是所有Python初学者的福祉,本书是一个独立的、全方位的学习资源,不论你将来使用Python 2.X、Python 3.X或两者兼有。

本书第5版已经更新到Python的3.3和2.7发行版,并且进行了充分扩展以反映当今Python世界中的一线实践。

这里的前言部分较为翔实地讲述了本书的目标、大纲以及结构。尽管是选读材料,但是它旨在协助你开始本书旅途之前,拥有一个大致的导览。




【本书的结构】

为了帮助你上手,本节提供了本书所有主要部分内容和目标的一个快速概要。如果你万分焦急,想要开始本书的学习,你大可略过这一节(或浏览全书目录)。然而,对于一些读者而言,这样大部头的一本书非常值得拥有一张预先的简明路线图。

经过构思,每一部分都涵盖了这门语言的一个主要功能区,而每一部分都由若干章组成,这些章节聚焦于本部分功能区的一个特定主题或方面。此外,每一章以习题及其答案结束,而每一部分以更大型的练习题结束,练习题的解答在附录D中给出。

注意: 实践很重要:我强烈推荐读者完成本书中的全部测试题与练习题。在编程领域,没有任何事物能够替代将你的所读付诸实践。无论你在本书中或你自己的项目中是否践行这一点,实际编写代码都能有效地帮你加深和强化书中提到的思想。

总体上讲,本书的组织形式是自底向上的,因为Python语言本身也是如此。随着我们不断前进,书中的示例与主题也将变得越来越有挑战性。例如,Python的类基本上仅仅是处理内置类型函数的包。一旦你掌握了内置类型和函数,理解类就相对容易了。由于每一部分都建立在位于其之前的、逻辑相关的部分之上,对于绝大多数读者来说,按顺序阅读才是最合适的。以下是你将学习的本书主要部分的预览:

【第①部分】

我们以Python的一个总体概览开始,其中回答了经常会被问到的初步问题——为什么人们使用这门语言,它能做些什么,等等。第1章介绍了潜藏于技术之下的主体思想,为你提供一些背景知识。本部分的剩余章节将继续探讨Python以及程序员运行程序的方式。主要目的是为你提供充足的信息,以便你能跟上随后的示例与习题。

【第二部分】

接下来,我们开始Python语言之旅,深入学习Python的主要内置对象类型如数字、列表、字典等,以及利用它们所能做的事情。你可以单独使用这些工具完成很多事情,而它们是每段Python脚本的核心。这是本书最重要的部分,因为这部分为随后的章节奠定了基础。我们还将在这一部分探索动态类型及其引用(这是用好Python的关键)。

【第三部分】

这一部分我们将继续介绍Python的语句,即你输入并创建的代码,同时还将在Python中处理对象。这一部分还介绍了Python的通用语法模型。尽管本部分关注于语法,但是它也介绍了一些相关的工具(如PyDoc系统),第一次引入迭代的概念,并探索了编程替代方法。

【第四部分】

本部分开始关注Python中较高层次的程序结构工具。函数其实是打包代码并重用的一种简单方式,它避免了代码冗余。在本部分,我们将探索Python的作用域规则、参数传递技巧,以及时常为人不齿的lambda表达式等。我们还将以函数式编程的视角回顾迭代器,引入用户定义的生成器,并学习如何为Python代码计时以测试代码性能。

【第五部分】

Python模块允许你将语句和函数组织为更大的组件,本部分展示了如何创建、使用以及重新加载模块。这里我们还将关注一些更高级的主题,如模块包、模块重新加载、包相关导入、3.3版本的新命名空间包,以及__name__变量。

【第六部分】

这里,我们探索Python的面向对象编程工具,类——一种可选但是强大的组织代码以便定制和重用的方式,使用它能自然地将代码冗余程度降到最低。正如你将看到的,类几乎都会重复使用我们到本书目前为止所介绍的思想,而Python中的OOP基本上就是关于在相互链接的类组成的类树中查找名称,以及在类的方法中特殊的第一位参数self。正如你还将看到的,在Python中OOP是可选的,但是大部分人都觉得Python中OOP的简洁性远胜于其他语言,而且OOP还能够极大地削减开发时间,尤其对于长期的战略项目研发更为明显。

【第七部分】

本部分将总结本书关于语言基本原理的介绍,并关注Python的异常处理模型及语句,同时对开发工具进行一个简明概览。当你开始编写大型程序时,这些工具将变得更加有用(例如调试和测试工具)。尽管异常是一种相当轻量级的工具,但把这一部分安排在类后面讨论,是由于用户定义的异常在现在的Python版本中本质上都是类。这里我们还介绍了一些更高级的工具,如上下文管理器。

【第八部分】

在最后这个部分,我们会探索一些高级主题:Unicode与字节串、诸如property和描述符的属性管理工具、函数装饰器和类装饰器以及元类。这些章全部是选读的,因为不是所有程序员都需要理解它们所应对的课题。另一方面,必须处理国际化文本或二进制数据的读者,或需要开发供其他程序员使用的API的读者,应该会在本部分发现一些有用的内容。这部分的示例也比本书中的大多数示例庞大,因此能充当自学材料。

【第九部分】

本书以四个附录的组合圆满结束,它们给出了在不同计算机上安装和使用Python的特定平台相关的小窍门;展示了Python 3.3配备的新Windows启动器;总结了本书最近几版涉及的Python版本中的更改,并给出了相关网上资源的链接;提供了每部分末尾练习题的解答。而每一章的“本章习题”的答案则出现在对应的章节中。

你也可以参看目录,以获取对本书组成更加细粒度的概览。





【对于有经验的程序员】


你拥有起初的优势,并能够迅速翻阅一些靠前的章节;但是你不应该跳过其中的那些Python专属的核心思想,并可能需要努力放下一些既有的“经验”。笼统地讲,在本书之前接触任何编程或脚本语言都是有帮助的,因为这能帮助你形成类比。另一方面,我还发现由于在其他语言中根植的成见,先前的编程经验也可能成为一种阻碍。(根据所写的第一份Python代码,认出课堂中的Java或C++程序员真是太容易了!)要用好Python需要你接纳它的思维模式。通过着眼于关键的核心概念,本书旨在以Python的方式来帮助你学习编写Python代码。



【对于真正的初学者】


在本书中你能同时学习Python以及编程本身;但是你可能需要更加努力一点,而且需要参考阅读其他更加容易的介绍资料来辅助学习。如果你还没有把自己当作一名程序员,你也有可能发现本书会帮到你,但是你要确保缓慢地前进,并且一路认真完成示例和习题。还要牢记,本书会花比讲授编程基础知识更多的时间来讲授Python本身。如果你发现自己因困惑而迷失在这里,我鼓励你在着手阅读本书之前,先了解一下通用的编程导论。Python官方网站提供了许多面向初学者的有用资源链接。


正式地讲,本书旨在成为所有初学者的第一个Python读本。对于一些之前从没有接触过电脑的人,它可能不是一种理想资源(例如,我们不会花费任何时间来了解电脑是什么),但是关于你的编程背景和学历,我没有做过多假设。


另一方面,我也不会把读者当作“傻瓜”来事无巨细地解释所有细节,毕竟在Python中做些有用的事很容易,而本书将会指引你怎样做。书中也偶尔会拿Python同其他语言(如C、C++、Java)做对比,但是如果你过去没有使用过这样的语言,你大可放心地忽略这些比较。