编辑推荐

基础知识→核心技术→典型实例→综合练习→项目案例,轻松上手与提高。全面掌握Python只需21天!

160个典型案例、2个项目案例、134个练习题

一线开发人员全程贴心讲解、轻松上手与提高。

内容简介

21天学通Python(第2版)》全面、系统、深入地讲解了Python编程基础语法与高级应用。在讲解过程中,通过大量实际操作的实例将Python语言知识全面、系统、深入地呈现给读者。此外,作者专门为《21天学通Python(第2版)》录制了大量的配套教学视频,让读者通过分析实例、运行实例尽快熟悉Python编程,在学习中遇到问题时,也可以作为参考,《21天学通Python(第2版)》共分3篇。

第1篇介绍Python语言的特点、安装、语法基础、程序流程控制、面向过程的编程方法、面向对象的编程方法、程序异常的处理;第2篇介绍了Python语言中的包与模块、迭代器、生成器、装饰器、上下文管理器等进阶语法,同时介绍了使用Python标准库中的文件系统处理、图形化界面编程、正则表达式、网络编程、多进(线)程编程、数据库编程。此外,还介绍了运用第三方库的Web网站编程、图片处理;第3篇通过两个案例介绍Python的综合编程技术。

21天学通Python(第2版)》内容涉及面广,从基本操作到高级技术及综合案例,涉及Python语言的基础语法和编程特性,而且实例实用、丰富,尤其适合广大编程初学者自学,也适合对Python语言感兴趣的爱好者作为参考用书。

作者简介

21天学通Python(第2版)》的作者团队成员为一线开发工程师、资深编程专家或专业培训师,在编程开发方面有着丰富的经验,并已出版过多本相关畅销书,颇受广大读者认可。

目录

第1篇Python编程基础
第1章编程与Python1
1.1什么是编程1
1.1.1硬件与软件1
1.1.2编程语言2
1.1.3编程与调试3
1.2选择Python的理由4
1.2.1Python是免费的自由软件4
1.2.2Python是跨平台的4
1.2.3Python功能强大4
1.2.4Python清晰优雅5
1.3安装Python5
1.3.1在Windows下安装Python6
1.3.2在Linux下安装Python7
1.4选择开发工具9
1.4.1Python自带开发工具:IDLE9
1.4.2文本编辑器:Emacs10
1.4.3Python开发工具:PythonWin12
1.5编辑和运行Python程序15
1.5.1你好,Python15
1.5.2运行程序文件15
1.5.3交互式运行Python16
1.6小结17
1.7本章习题17
第2章Python起步18
2.1Python语法基础18
2.1.1缩进分层18
2.1.2代码注释19
2.1.3断行19
2.2Python输入/输出20
2.2.1接收键盘/输入20
2.2.2显示处理结果21
2.3用Python计算21
2.3.1算式与代数式运算22
2.3.2惊奇23
2.4小结24
2.5本章习题24
第3章Python数据类型26
3.1Python简单数据类型26
3.1.1字符串(str)26
3.1.2整数(int)29
3.1.3浮点数(float)30
3.1.4类型转换30
3.2字符串进阶31
3.2.1原始字符串31
3.2.2格式化字符串32
3.2.3中文字符串处理32
3.3标志符与赋值号33
3.3.1标志符33
3.3.2赋值号“=”33
3.4Python结构数据类型34
3.4.1列表(list)34
3.4.2元组(tuple)36
3.4.3字典(dict)36
3.5内置常量与逻辑运算符、比较运算符38
3.5.1常用内置常量38
3.5.2Python中逻辑运算符38
3.5.3Python中比较运算符39
3.5.4Python中其他逻辑操作符39
3.6序列40
3.6.1序列切片40
3.6.2序列内置操作41
3.7小结42
3.8本章习题42
第4章控制语句执行流程44
4.1用if选择执行语句44
4.1.1if基础44
4.1.2if语句的嵌套47
4.2用for循环执行语句49
4.2.1for基础49
4.2.2for语句与break语句、continue语句49
4.2.3for语句与range()函数51
4.2.4for语句与内置迭代函数.52
4.3用while循环执行语句53
4.3.1while基础53
4.3.2增量赋值运算符54
4.4推导或内涵(listcomprehension)55
4.4.1推导基础55
4.4.2推导进阶55
4.5小结56
4.6本章习题56
第5章自定义功能单元(一)58
5.1使用函数58
5.1.1声明函数58
5.1.2调用函数59
5.2深入函数60
5.2.1默认值参数60
5.2.2参数传递62
5.2.3可变数量参数传递62
5.2.4拆解序列的函数调用65
5.2.5函数调用时参数的传递方法65
5.3变量的作用域67
5.4使用匿名函数(lambda)68
5.5Python常用内建函数69
5.6小结70
5.7本章习题70
第6章自定义功能单元(二)72
6.1面向对象编程概述72
6.1.1万物皆对象72
6.1.2对象优越性73
6.1.3类和对象73
6.2定义和使用类73
6.2.1定义类73
6.2.2使用类74
6.3类的属性和方法75
6.3.1类的方法75
6.3.2类的属性77
6.3.3类成员方法与静态方法79
6.4类的继承80
6.4.1类的继承80
6.4.2多重继承81
6.4.3方法重载83
6.5小结83
6.6本章习题83
第7章错误、异常和程序调试85
7.1语法错误85
7.2异常的处理86
7.2.1异常处理的基本语法86
7.2.2Python主要的内置异常及其处理88
7.3手工抛出异常90
7.3.1用raise手工抛出异常90
7.3.2assert语句91
7.3.3自定义异常类92
7.4用pdb调试程序93
7.4.1调试语句块函数93
7.4.2调试函数94
7.5测试程序95
7.5.1用testmod函数测试95
7.5.2用testfile函数测试96
7.6小结97
7.7本章习题97
第2篇Python编程高阶
第8章复杂程序组织99
8.1模块99
8.1.1模块概述99
8.1.2自己编写模块100
8.1.3模块位置101
8.1.4__pycache__目录102
8.1.5具有独立运行能力的模块102
8.2包103
8.2.1包概述103
8.2.2包详解104
8.3Python常用标准库简介105
8.3.1数学类模块105
8.3.2日期与时间类106
8.4小结106
8.5本章习题106
第9章迭代器、生成器与装饰器108
9.1迭代器108
9.1.1迭代器概述108
9.1.2自定义迭代器109
9.1.3内置迭代器工具109
9.2生成器112
9.2.1生成器创建112
9.2.2深入生成器113
9.2.3生成器与协程114
9.3装饰器115
9.3.1装饰器概述115
9.3.2装饰函数115
9.3.3装饰类116
9.4小结117
9.5本章习题118
第10章Python进阶话题119
10.1函数与命名空间119
10.2闭包及其应用120
10.2.1闭包概述120
10.2.2闭包与延迟求值121
10.2.3闭包与泛型函数121
10.3上下文管理器122
10.4用字符串操作对象属性124
10.5用字典构造分支程序125
10.6重载类的特殊方法126
10.7鸭子类型(ducktyping)与多态127
10.8小结128
10.9本章习题128
第11章文件与文件系统130
11.1文件操作基础130
11.1.1open()函数130
11.1.2用fileinput操作文件132
11.2常用文件和目录操作133
11.2.1获得当前路径133
11.2.2获得目录中的内容133
11.2.3创建目录134
11.2.4删除目录134
11.2.5判断是否是目录134
11.2.6判断是否为文件134
11.2.7遍历某目录下的所有文件和目录135
11.2.8由文件名批量获取姓名和考号135
11.2.9批量文件重命名136
11.3编译为可执行文件137
11.3.1用py2exe生成可执行程序137
11.3.2用cx_freeze生成可执行文件138
11.4小结140
11.5本章习题140
第12章基于tkinter的GUI编程141
12.1GUI概述141
12.1.1GUI是什么141
12.1.2Python编写GUI程序库141
12.2tkinter图形化库简介142
12.2.1创建GUI程序第一步142
12.2.2创建GUI程序第二步143
12.3tkinter组件144
12.3.1组件分类144
12.3.2布局组件144
12.4常用tkinter组件145
12.4.1按钮145
12.4.2文本框147
12.4.3标签148
12.4.4菜单149
12.4.5单选框和复选框151
12.4.6绘制图形153
12.5响应操作事件155
12.5.1事件基础155
12.5.2响应事件157
12.6对话框159
12.6.1标准对话框159
12.6.2自定义对话框165
12.7小结166
12.8本章习题166
第13章正则表达式168
13.1正则表达式基础168
13.1.1正则表达式概述168
13.1.2正则表达式基本元字符168
13.1.3常用正则表达式170
13.2re模块171
13.2.1正则匹配搜索函数171
13.2.2sub()与subn()函数172
13.2.3split()函数173
13.2.4正则表达式对象173
13.3分组匹配与匹配对象使用177
13.3.1分组基础177
13.3.2分组扩展177
13.3.3匹配对象与组的使用178
13.3.4匹配对象与索引使用179
13.4正则表达式应用示例180
13.5小结182
13.6本章习题182
第14章网络编程183
14.1网络编程基础183
14.1.1什么是网络183
14.1.2网络协议183
14.1.3地址与端口184
14.2套接字的使用185
14.2.1用socket建立服务器端程序185
14.2.2用socket建立客户端程序186
14.2.3用socket建立基于UDP协议的服务器与客户端程序188
14.2.4用socketserver模块建立服务器189
14.3urllib与http包使用190
14.3.1urllib和http包简介190
14.3.2用urllib和http包访问网站193
14.4用poplib与smtplib库收发邮件194
14.4.1用poplib检查邮件194
14.4.2用smtplib发送邮件196
14.5用ftplib访问FTP服务198
14.5.1ftplib模块简介198
14.5.2使用Python访问FTP200
14.6小结202
14.7本章习题202
第15章线程和进程203
15.1线程203
15.1.1用threading.Thread直接在线程中运行函数203
15.1.2通过继承threading.Thread类来创建线程204
15.1.3线程类Thread使用204
15.2进程208
15.2.1进程基础208
15.2.2用Popen类创建进程209
15.3小结211
15.4本章习题211
第16章数据库编程212
16.1Python数据库应用程序接口212
16.1.1数据库应用程序接口概述212
16.1.2数据库游标的使用213
16.2Python操作SQLite3数据库213
16.2.1SQLite3数据库简介214
16.2.2SQLite3数据库操作实例214
16.3Python操作MariaDB数据库216
16.3.1MariaDB数据库简介217
16.3.2建立MariaDB数据库操作环境217
16.3.3MariaDB数据库操作实例219
16.4Python操作MongoDB数据库221
16.4.1MongoDB数据库简介221
16.4.2建立MongoDB数据库操作环境221
16.4.3MongoDB数据库基础222
16.4.4MongoDB数据库操作实例225
16.4.5用对象关系映射(ORM)工具操作MongoDB数据库227
16.5小结230
16.6本章习题230
第17章Web网站编程231
17.1Web网站编程概述231
17.2FlaskWeb框架及其应用232
17.2.1FlaskWeb框架简介232
17.2.2FlaskWeb框架初识232
17.2.3URL装饰器与URL参数传递234
17.2.4GET与POST请求的参数传递236
17.2.5使用cookie与session跟踪客户238
17.2.6使用静态文件资源与页面文件241
17.2.7接收上传文件242
17.2.8在Flask框架中使用数据库243
17.3TornadoWeb框架及其应用246
17.3.1Tornado框架简介246
17.3.2Tornado框架初识246
17.3.3请求参数的获取248
17.3.4用cookie与安全cookie跟踪客户250
17.3.5URL转向与静态文件资源251
17.3.6TornadoWeb框架应用举例253
17.4小结258
17.5本章习题258
第18章数据结构基础260
18.1表、栈和队列260
18.1.1用列表来创建表260
18.1.2自定义栈数据结构261
18.1.3实现队列功能263
18.2树和图264
18.2.1用列表构建树264
18.2.2实现二叉树类与遍历二叉树265
18.2.3用字典构建与搜索图268
18.3查找与排序270
18.3.1实现二分查找270
18.3.2用二叉树排序272
18.4小结274
18.5本章习题274
第19章用Pillow库处理图片275
19.1第三方Pillow库概述275
19.1.1安装第三方Pillow库275
19.1.2Pillow库简介275
19.1.3Pillow库处理图像基础276
19.1.4Image模块中函数的使用277
19.1.5Image模块中Image类的使用280
19.1.6使用ImageChops模块进行图片合成285
19.1.7使用ImageEnhance模块增强图像效果288
19.1.8使用ImageFilter模块的滤镜289
19.1.9使用ImageDraw模块画图290
19.2使用Pillow库处理图片举例291
19.2.1图片格式转换291
19.2.2批量生成缩略图293
19.2.3为图片添加Logo296
19.3小结300
19.4本章习题301
第3篇Python编程实战
第20章案例1做一个Windows上的360工具302
20.1案例背景302
20.2从创建图形化界面开始303
20.2.1创建基本图形化工作界面303
20.2.2响应菜单事件305
20.3清理垃圾文件307
20.3.1迭代目录307
20.3.2扫描垃圾文件308
20.3.3多线程加速310
20.3.4扫描所有磁盘311
20.3.5删除垃圾文件313
20.4搜索文件315
20.4.1搜索超大文件315
20.4.2按名称搜索文件316
20.5小结317
第21章案例2Python搞定大数据319
21.1案例背景319
21.1.1大数据处理方式概述319
21.1.2处理日志文件320
21.1.3要实现的案例目标321
21.2分割日志文件321
21.3用Map函数处理小文件323
21.4用Reduce函数归集数据325
21.5小结326

精彩书摘

第1章编程与Python

自从计算机诞生之日起,编程就是计算机相关工作的一部分,如今编程不再只是与计算机有关的工作,它已经渗透到社会生成的各个领域中去了,不管你是否从事IT行业,懂得点编程也是工作和生活的需要之一。那么,什么是编程呢?

如今的编程语言可以说是五花八门、百花齐放,发展至今已经有几十种计算机语言。从最初的机器语言,到今天的高级语言,让你选择的话,可能会无所适从。

Python语言是一种开放源代码的、免费的跨平台语言,它既具有当今高级语言所具有的面向对象等特性,又具有清晰的结构、简洁的语法。Python语言自身带有丰富而实用的标准库,还拥有大量的第三方开源库,能够应付各种场合。Python语言可以使用C/C++进行扩展,也可以嵌入到其他语言之中。所以,《21天学通Python(第2版)》推荐的是Python。

本章内容包括:

?编程预备知识;

?Python语言特点;

?安装Python工作环境;

?Python语言开发工具介绍;

?建立和运行Python程序.

1.1什么是编程

简单地说,编程就是安排计算机解决某个问题的方法、步骤。但要详细了解
编程还需要你了解计算机的相关知识

1.1.1硬件与软件

计算机硬件是计算机中你能够触及到的部分,换句话说就是你能踢它一脚的东西。从信息处理的角度来看计算机,其结构如图1.1所示。

如图1.1所示,信息由外部世界经由输入设备进入计算机,然后在主机(CPU和内存)内进行处理,最后通过输出设备把信息处理的结果送出。在这个过程中,这些输入和输出设备根据信息的不同特点而表现不同,比如要输入字符,可以通过键盘进行录入。

最常见的输入设备就是键盘和鼠标,它是用户向计算机输入信息的主要设备,因此你所看到的计算机,几乎全都带有这两种设备。

输出设备对于计算机来说,也很重要。计算机只有具有了输出设备,人类才能了解它的运行状态,获取信息处理的结果,而不同的输出设备以不同的形式输出信息处理结果。最常用的输出设备就是以图文形式输出信息的显示器和打印机,当然还包括音箱、绘图仪等。

计算机的本质是信息处理机,要处理信息就必须具备处理信息的硬件设备。类似于人的大脑,要处理信息就要有运算能力和存储能力。计算机主机中的CPU(包括运算器和控制器)就具有运算能力及控制能力;存储器就具有存储能力。

对于计算机来说,由其自身特点决定了它的信息处理和信息存储的形式,即使用二进制代码(只有0和1)来表示所有的信息。外界所有的信息要进入计算机,都必须千方百计地转换为二进制代码,这些信息有文字、图片、声音、视频等各种形式。

计算机在进行信息处理时,必须能够按照人们的要求,通过一定的方式、方法或者步骤来进行。要实现这个目标,总不能每做一步都由人临时控制,因此,计算机就必须通过软件(程序)来进行控制。计算机输入信息、处理信息和输出信息都必须通过软件来进行控制。

由计算机硬件概念可推知,计算机软件是指你不能触及的部分,它实际上是对计算机进行控制的方式或步骤的描述。

计算机要想完成某个任务,就要知道完成这个任务所需的人为指定的步骤或方法。对于某个特定的问题,人们通过给定的指令序列来进行方法或步骤的描述,而这里的指令序列本质上应该是CPU指令的序列,也就是程序。

此外,要解决某一问题总是有一定方法的,这个方法的具体实现方式被称之为算法。就像解一道数学应用题,既可以使用列综合算式方法来完成,也可以通过列方程的方法来完成,而这些不同的算法最后达成的目标是相同的。

很显然,计算机能够运行的前提是必须同时具有硬件和软件。硬件是一切工作的基础,也是计算机赖以存在的物质基础;而软件是硬件工作必不可少的控制者。同时具有硬件系统和软件系统才能构成一个完整的计算机系统。

1.1.2编程语言

编程语言在计算机诞生的那一天起就存在了,那个时候,人类自然会想到用计算机表示信息的方式(二进制代码0和1)来描述对计算机的控制程序,这就是机器语言,它同时也是这台计算机CPU的内建命令集。由此也可以看出,机器语言其实就是人类用计算机本身的语言来完成对计算机的控制的,要想控制计算机,人类就要学会机器所使用的机器语言(用0和1描述)。

当然,可想而知:用一长串0和1来写程序控制计算机的话,效率肯定很低,既不容易理解,又很容易搞错。此外,不同类型的计算机其机器语言也不同,也就是说即使是为了解决同样的问题,在不同的计算机中,程序也不相同。

要想解决机器语言难学、易错的问题,第一步是不用0和1来写程序,因为那太难记、难写,又很容易被错写。那就用单词来代替命令代码(一串0、1),因此诞生了汇编语言,汇编语言不是采用二进制代码来描述解决问题的步骤,而计算机只能识别二进制代码,所以运行时要先翻译为二进制代码的机器语言(专业术语叫编译),然后计算机才能识别和执行。

汇编语言虽然解决了易错、难记的问题,但还是离人类的语言太遥远了,如果能像对一个人说话一样来写程序那就最好了。可是计算机毕竟是机器,要实现这个目标还有很长的一段路要走。人们就使用了能够较为准确描述算法步骤的接近于人类语言和数学表示方法的形式来作为写程序的语言,即现代常用的编程语言——高级语言。常见的高级语言有Python、C、Java、Perl、Erlang、LISP等。

前言/序言

“21天学编程系列”自2009年1月上市以来一直受到广大读者的青睐。该系列中的大部分图书从一上市就登上了编程类图书销售排行榜的前列,很多大、中专院校也将该系列中的一些图书作为教材使用,目前这些图书已经多次印刷、改版。可以说,“21天学编程系列”是自2009年以来,国内原创计算机编程图书最有影响力的品牌之一。

21天学通Python(第2版)》有何特色

1.细致体贴的讲解

为了让读者更快上手,《21天学通Python(第2版)》特别设计了适合初学者的学习方式,用准确的语言总结概念、用直观的图示演示过程、用详细的注释解释代码、用形象的比喻帮助记忆。

知识点介绍:准确、清晰是其显著特点。一般放在每一节开始的位置,让零基础的读者了解相关概念,顺利入门。

范例:放在每节知识点介绍之后,以章节顺序编号,便于检索和循序渐进地学习、实践。

示例代码:与范例编号对应,层次清楚、语句简洁、注释丰富,体现了代码优美的原则,有利于读者养成良好的代码编写习惯。对于大段程序,均在每行代码前设定编号便于学习。

运行结果:对范例给出运行结果和对应图示,帮助读者更直观地理解示例代码。

代码解析:将示例代码中的关键代码行逐一解释,有助于读者掌握相关概念和知识。

贴心的提示:为了便于读者阅读,《21天学通Python(第2版)》还穿插着一些技巧、提示等小贴士,体例约定如下。

l提示:通常是一些贴心的提醒,让读者加深印象。例如提供建议,或者提出解决问题的方法。

l注意:提出学习过程中需要特别注意的一些知识点和内容,或者相关信息。

l警告:对操作不当或理解偏差将会造成的灾难性后果给出警示,以加深读者印象。

习题:每章最后提供专门的测试习题,供读者检验所学知识是否牢固掌握。

微课:使用手机App(例如微信)扫描二维码,可在线观看配套教学微课。

经作者多年的培训和授课证明,以上讲解方式是最适合初学者学习的方式,读者按照这种方式学习,将会非常轻松、顺利地掌握《21天学通Python(第2版)》知识。

2.配套资源

为了帮助读者比较直观地学习,《21天学通Python(第2版)》提供超值配套资源,内容包括多媒体视频、电子教案(PPT)、实例源代码等。

多媒体视频

21天学通Python(第2版)》配有长达18小时的教学视频,讲解关键知识点界面的操作和书中的一些综合练习题。作者亲自配音、演示,手把手指导读者使用。

电子教案(PPT)

21天学通Python(第2版)》可以作为高校相关课程的教材或课外辅导书,所以作者特别为《21天学通Python(第2版)》制作了电子教案(PPT),以方便老师教学使用。

职场面试法宝

21天学通Python(第2版)》附赠“职场面试法宝”,含常见的职场经典故事及测试题。

3.提供完善的技术支持

21天学通Python(第2版)》的技术支持论坛为http://www.rzchina.net,读者可以在上面提问、交流。另外,论坛上还有一些小的教程、视频动画和各种技术文章,它们可帮助读者提高开发水平。


其他推荐