《Python程序设计(第3版 微课版)》共18章,主要内容如下:第1章介绍Python基础知识与概念;第2章讲解列表、元组、字典、集合等常用序列结构;第3章讲解Python选择结构与循环结构;第4章讲解字符串基本操作方法与正则表达式模块re的用法;第5章讲解函数设计与使用;第6章讲解面向对象编程有关的知识;第7章讲解文本文件与二进制文件的读写,以及文件与目录操作,Office文件操作;第8章讲解异常处理结构以及Python程序的调试与测试方法;第9章讲解标准库tkinter的GUI应用;第10章讲解网络编程,网页内容读取;第11章讲解安卓平台的Python程序设计;第12章讲解注册表编程以及系统运维编程;第13章讲解多线程与多进程编程;第14章介绍SQLite、Access、MS SQL Server、MySQL访问方法;第15章讲解图形图像编程、音乐编程、视频处理以及语音识别;第16章介绍逆向工程与软件分析原理、IDAPython编程、Immunity Debugger以及Windows平台软件调试原理;第17章讲解NumPy、SciPy、Matplotlib、pandas与statistics在科学计算和可视化、数据处理、统计与分析中的应用;第18章讲解安全哈希算法、对称密钥密码算法DES与AES以及非对称密钥密码算法RSA与DSA。
《Python程序设计(第3版 微课版)》既可以作为计算机及相关专业的教材,也可以作为Python爱好者的参考书。
前言
Python由Guido van Rossum于1989年底开始设计与开发,第一个公开发行版本发行于1991年。Python推出不久就迅速得到了各行业人士的青睐,经过30年的发展,Python已经渗透到计算机科学与技术、统计分析、移动终端开发、科学计算可视化、逆向工程与软件分析、图形编程与图像处理、人工智能、游戏设计与策划、网站开发、数据采集、大数据处理、密码学、系统运维、音乐编程、计算机辅助教育、医药辅助设计、天文信息处理、化学、生物等几乎所有专业和领域。著名搜索引擎Google的核心代码使用Python实现,迪士尼公司的动画制作与生成采用Python实现,大部分UNIX和Linux都内建了Python环境支持,豆瓣网使用Python作为主体开发语言进行网站架构和有关应用的设计与开发,网易大量网络游戏的服务器端代码超过70%采用Python进行设计与开发,易度的PaaA企业应用云端开发平台和百度云计算平台BAE也都大量采用了Python语言,美国宇航局使用Python实现了CAD/CAE/PDM库及模型管理系统,雅虎公司使用Python建立全球范围的站点群,微软公司的集成开发环境Visual Studio 2015开始默认支持Python语言,开源ERP系统Odoo完全采用Python语言开发,引力波数据是用Python进行处理和分析的,类似的案例数不胜数。
早在多年前Python就已经成为卡内基梅隆大学、麻省理工学院、加州大学伯克利分校、哈佛大学等国外很多大学计算机专业或非计算机专业的程序设计入门教学语言,目前国内也有不少学校的多个专业陆续开设了Python程序设计课程。2011年1月Python语言被TIOBE网站评为2010年度语言;2014年12月IEEE Spectrum推出的编程语言排行榜中,Python取得了第5位的好名次;2017年和2018年连续两年IEEE Spectrum把Python排在第一位;2019年7月TIOBE编程语言排行榜上Python跃居第3位,仅次于Java、C,已经成为脚本语言的标准。
Python是一门免费、开源的跨平台高级动态编程语言,支持命令式编程、函数式编程,完全支持面向对象程序设计,拥有大量功能强大的内置对象、标准库和扩展库以及众多狂热的支持者,使得各领域的科研人员、策划人员甚至管理人员能够快速实现和验证自己的思路与创意。在有些编程语言中需要编写大量代码才能实现的功能,在Python中直接调用内置函数或标准库方法即可实现。Python用户只需要把主要精力放在业务逻辑的设计与实现上,在开发效率和运行效率之间达到了完美的平衡,其精妙之处令人赞叹。
Python是一门快乐、优雅的语言。与C语言系列和Java等语言相比,Python大幅度降低了学习与使用的难度。Python易学易用,语法简洁清晰,代码可读性强,编程模式非常符合人类思维方式和习惯。经常浏览Python社区的优秀代码、Python标准库和扩展库文档甚至源代码,适当了解其内部工作原理,可以帮助读者编写出更加优雅的Python程序。
如果读者有其他程序设计语言的基础,那么在学习和使用Python的过程中,一定不要把用其他语言编程的习惯和风格带到Python中来,那样不仅会使得代码变得非常冗长、烦琐,还可能会严重影响代码的效率。应该尽量尝试从最自然、最简洁的角度出发去思考和解决问题,这样才能写出更加优雅、更加Pythonic的代码。
本书内容组织
对于Python程序员来说,熟练运用优秀、成熟的扩展库可以快速实现业务逻辑和创意,而Python语言基础知识和基本数据结构的熟练掌握则是理解和运用其他扩展库的必备条件,并且在实际开发中建议优先使用Python内置对象和标准库对象实现预定功能。本书前8章使用大量篇幅介绍Python编程基础知识,通过大量案例演示Python语言的精妙与强大。从第9章开始介绍大量标准库和扩展库在GUI编程、网络编程、移动终端编程、Windows系统编程、多线程与多进程编程、数据库编程、图形图像编程、逆向工程与软件分析、科学计算可视化、密码学编程等多个领域的应用。全书共18章,主要内容组织如下。
第1章基础知识。介绍如何选择Python版本,Python对象模型,数字、字符串等基本数据类型,运算符与表达式,内置函数,基本输入输出,Python程序文件名,Python代码编写规范等。
第2章Python序列。讲解序列常用的方法和基本操作,成员测试运算符,切片操作,列表基本操作与常用方法,列表推导式,元组与生成器推导式,序列解包,字典、集合基本操作与常用方法,字典推导式与集合推导式,以及如何使用列表实现栈、队列、二叉树、有向图等复杂数据结构。
第3章选择与循环。讲解Python选择结构、for循环与while循环,带else子句的循环结构,break和continue语句,选择结构与循环结构的综合运用。
第4章字符串与正则表达式。讲解字符串编码格式,字符串格式化、替换、分隔、连接、查找、排版等基本操作,正则表达式语法、正则表达式对象、子模式与Match对象,以及Python正则表达式模块re的应用。
第5章函数设计与使用。讲解函数的定义与使用,关键参数、默认值参数、长度可变参数等不同参数类型,全局变量与局部变量,参数传递时的序列解包,return语句,lambda表达式,以及函数式编程、生成器与可调用对象等若干高级话题。
第6章面向对象程序设计。讲解类的定义与使用,self与cls参数,类成员与实例成员,私有成员与公有成员,继承与派生,特殊方法与运算符重载等内容。
第7章文件操作。讲解文件操作基本知识,Python文件对象,文本文件读写操作,二进制文件读写与对象序列化,文件复制、移动、重命名、文件类型检测、文件完整性检查、压缩与解压缩、文件夹大小统计、文件夹增量备份、删除指定类型的文件和Office文件操作等内容。
第8章异常处理结构与程序调试、测试。讲解Python异常类层次结构与自定义异常类,多种不同形式的异常处理结构,使用IDLE和pdb模块调试Python程序,Python单元测试相关知识。
第9章GUI编程。讲解如何使用标准库tkinter进行GUI编程,通过大量实际案例演示基本组件的用法。
第10章网络程序设计。讲解计算机网络基础知识,TCP、UDP编程,网页内容读取与网页爬虫。
第11章安卓平台的Python编程。介绍QPython和QPython3开发环境的应用,讲解安卓平台的Python程序设计。
第12章Windows系统编程。讲解注册表编程、GUI编程、系统版本判断,将Python程序打包为exe可执行文件,在Python中调用外部程序,以及Python在系统运维中的应用。
第13章多线程与多进程编程。讲解Python标准库threading和multiprocessing在多线程编程与多进程编程中的应用,以及多线程与多进程之间的数据共享与同步控制。
第14章数据库编程。介绍SQLite数据库及其相关概念,Connection对象、Cursor对象、Row对象,以及使用Python扩展库操作Access、MS SQL Server、MySQL等数据库。
第15章多媒体编程。讲解扩展库PyOpenGL在计算机图形学编程中的应用,扩展库pillow在图像编程中的应用,pygame、SciPy在音乐编程中的应用,opencv在视频处理中的应用以及speech在语音识别中的应用。
第16章逆向工程与软件分析。介绍逆向工程与软件分析的原理和相关插件,IDAPython与Immunity Debugger在软件分析中的应用,以及Windows平台软件调试原理。
第17章数据分析、科学计算与可视化。讲解扩展库NumPy、SciPy、Matplotlib在科学计算与可视化领域的应用,以及扩展库pandas与标准库statistics在数据处理、统计与分析中的应用。
第18章密码学编程。以pycryptodome、rsa、hashlib等模块为主讲解安全哈希算法、对称密钥密码算法DES与AES,以及非对称密钥密码算法RSA与DSA的应用。
本书信息量大,知识点紧凑,案例丰富,实用性强。全书100多个涉及不同行业领域的实用案例,没有多余的文字、程序输出结果或软件安装截图,充分利用宝贵的篇幅来讲解尽可能多的知识。本书作者具有20年程序设计教学经验,讲授过汇编语言、C/C++/C#、Java、PHP、Python等多门程序设计语言,编写过大量的应用程序。本书内容结合作者多年教学与开发过程中积累的许多经验和案例,并巧妙地糅进了相应的章节。
本书对Python内部工作原理进行了一定深度的剖析,95%以上的案例均使用Python 3.5、3.6和3.7实现,代码同样适用于Python 3.8以及更高版本实现。书中适当介绍了Python代码优化和安全编程的有关知识,可以满足不同层次读者的需要。
本书适用读者
本书可以作为(但不限于):
(1) 计算机专业本科生Python程序设计教材或研究生必读书目。本科生建议72学时以上,讲授本书全部章节。
(2) 数字媒体技术、软件工程、网络工程、信息安全、通信工程、电子、自动化及其他工科专业本科生或研究生Python程序设计教材。建议64学时,讲授前9章,再根据专业特点与需要在其他章节中选讲3~5章。
(3) 会计、经济、金融、管理、心理学、统计以及其他非工科专业研究生或本科生Python程序设计教材。建议64学时,讲授前8章中不带星号的内容,第9章的案例选讲3~4个,再根据专业特点与需要在其他章节中选讲2~3章,其余章节由学生根据兴趣自学。
(4) 非计算机相关专业本科生公共基础课Python程序设计教材。建议48学时并边讲边练,讲授前8章中不带星号的章节,再根据需要在其他章节中选讲2~3章,其余章节可由学生根据兴趣自学。
(5) 专科院校或职业技术学院Python程序设计教材。建议96学时,讲授前9章中不带星号的内容以及第10、13、14、17章。
(6) Python培训用书。建议时间为一周,讲授前8章,再根据需要选讲3~5章。
(7) 具有一定Python基础的读者进阶首选学习资料。
(8) 涉及Python开发的程序员、策划人员、科研人员和管理人员阅读书目。
(9) 打算利用业余时间学习一门快乐的程序设计语言并编写几个小程序来娱乐的读者首选学习资料。
(10) 少数对编程具有浓厚兴趣和天赋的中学生课外阅读资料。
教学资源
本书提供全套教学课件、源代码、课后习题答案与分析、考试题库以及教学大纲,配套资源可以登录清华大学出版社官方网站(www.tup.com.cn)下载或与作者联系索取,作者电子邮箱地址为dongfuguo2005@126.com,微信公众号为“Python小屋”。
由于时间仓促,作者水平有限,书中难免存在纰漏,不足之处还请同行指正并通过作者联系方式进行反馈与交流。作者将不定期在公众号和微信发布和更新勘误表,并通过QQ和微信答复读者的疑问。
感谢
首先感谢父母的养育之恩,在当年那么艰苦的条件下还坚决支持我读书,没有让我像其他同龄的孩子一样辍学。感谢姐姐、姐夫多年来对我的爱护以及在老家对父母的照顾,感谢善良的弟弟、弟媳在老家对父母的照顾,正是有了你们,我才能在远离家乡的城市安心工作。感谢我的妻子在生活中对我的大力支持,也感谢懂事的女儿在我工作的时候能够在旁边安静地读书而尽量不打扰我,在定稿前和妈妈一起帮我阅读全书并检查出了几个错别字。
感谢每一位读者,感谢您在茫茫书海中选择了本书,衷心祝愿您能够从本书中受益,学到您需要的知识!同时也期待每一位读者的热心反馈,随时欢迎您指出书中的不足!
本书在编写出版过程中得到清华大学出版社的大力支持和帮助,在此表示衷心的感谢。
董付国定稿于山东烟台
2020年4月
董付国,2000年参加工作,具有丰富的编程经验和17年的教学经验,讲授过多种程序设计语言,多次指导学生参加各类竞赛并取得了较好的名次,曾使用C、C++、C#、PHP、Python编写过大量应用程序。近10年来发表学术论文30余篇,超过20篇被EI检索,多次参加高水平学术会议,先后出版《Python程序设计》、《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》、《Python程序设计开发宝典》和《中学生可以这样学Python》、《玩转Python轻松过二级》、《Python程序设计实验指导书》系列教材。
目录
第1章基础知识1
1.1如何选择Python版本1
1.2Python安装与简单使用3
1.3使用pip管理Python扩展库4
1.4Python基础知识5
1.4.1Python对象模型5
1.4.2Python变量6
1.4.3数字9
1.4.4字符串11
1.4.5运算符与表达式11
1.4.6常用内置函数16
1.4.7基本输入输出20
1.4.8模块导入与使用21
1.5Python代码编写规范22
1.6Python文件名24
1.7Python脚本的__name__属性24
1.8编写自己的包25
1.9Python程序伪编译与打包26
1.10Python编程快速入门27
1.11The Zen of Python29
本章小结29
习题30第2章Python序列31
2.1列表31
2.1.1列表创建与删除32
2.1.2列表元素的增加32
2.1.3列表元素的删除34
2.1.4列表元素访问与计数37
2.1.5成员资格判断38
2.1.6切片操作38
2.1.7列表排序与逆序41
2.1.8用于序列操作的常用内置函数42
2.1.9列表推导式43
2.1.10使用列表实现向量运算45
2.2元组46
2.2.1元组的创建与删除46
2.2.2元组与列表的区别46
2.2.3序列解包47
2.2.4生成器表达式48
2.3字典49
2.3.1字典创建与删除49
2.3.2字典元素的读取50
2.3.3字典元素的添加与修改51
2.3.4字典应用案例51
2.4集合52
2.4.1集合的创建与删除52
2.4.2集合运算53
2.4.3集合运用案例53
2.5再谈内置函数sorted()54
2.6复杂数据结构56
2.6.1堆56
2.6.2队列57
2.6.3栈59
2.6.4链表61
2.6.5二叉树62
2.6.6有向图63
本章小结64
习题65第3章选择与循环67
3.1条件表达式67
3.2选择结构68
3.2.1单分支选择结构68
3.2.2双分支选择结构68
3.2.3嵌套的选择结构69
3.2.4选择结构应用案例70
3.3循环结构72
3.3.1for循环与while循环72
3.3.2循环结构的优化73
3.4break和continue语句73
3.5案例精选74
本章小结80
习题81第4章字符串与正则表达式83
4.1字符串83
4.1.1字符串格式化83
4.1.2字符串常用方法86
4.1.3字符串常量92
4.1.4可变字符串93
4.1.5中文分词与拼音处理94
4.1.6字符串应用案例精选95
4.2正则表达式97
4.2.1正则表达式语法97
4.2.2re模块主要函数100
4.2.3直接使用re模块函数100
4.2.4使用正则表达式对象103
4.2.5子模式与Match对象105
4.2.6正则表达式应用案例精选108
本章小结113
习题114第5章函数设计与使用115
5.1函数定义与调用116
5.2形参与实参117
5.3参数类型118
5.3.1默认值参数118
5.3.2关键参数120
5.3.3可变长度参数120
5.3.4参数传递时的序列解包121
5.4return语句122
5.5变量作用域122
5.6lambda表达式124
5.7案例精选126
5.8高级话题132
本章小结136
习题137第6章面向对象程序设计138
6.1类的定义与使用138
6.1.1类定义语法138
6.1.2self参数139
6.1.3类成员与实例成员139
6.1.4私有成员与公有成员140
6.2方法141
6.3属性142
6.4特殊方法与运算符重载144
6.4.1常用特殊方法144
6.4.2案例精选146
6.5继承机制153
本章小结156
习题156第7章文件操作158
7.1文件对象158
7.2文本文件操作案例精选159
7.3二进制文件操作案例精选161
7.3.1使用pickle模块162
7.3.2使用struct模块162
7.4文件级操作163
7.4.1os与os.path模块163
7.4.2shutil模块164
7.5目录操作165
7.6案例精选167
本章小结180
习题180第8章异常处理结构与程序调试、测试181
8.1基本概念181
8.2Python异常类与自定义异常182
8.3Python中的异常处理结构185
8.3.1try…except…结构185
8.3.2try…except…else…结构186
8.3.3带有多个except的try结构186
8.3.4try…except…finally…结构187
8.4断言与上下文管理189
8.4.1断言189
8.4.2上下文管理189
8.5使用IDLE调试代码190
8.6使用pdb模块调试程序191
8.6.1pdb模块常用命令191
8.6.2使用pdb模块调试Python程序192
8.7Python单元测试194
本章小结197
习题198第9章GUI编程199
9.1tkinter基础199
9.1.1tkinter常用组件199
9.1.2tkinter应用程序开发基本流程200
9.2tkinter应用案例精选202
9.2.1用户登录界面202
9.2.2选择类组件应用204
9.2.3简单文本编辑器206
9.2.4简单画图程序210
9.2.5电子时钟214
9.2.6简易计算器216
9.2.7桌面放大镜219
9.2.8抽奖程序220
9.2.9编写猜数游戏222
9.2.10图片查看器程序226
本章小结229
习题229第10章网络程序设计230
10.1计算机网络基础知识230
10.2UDP和TCP编程基础231
10.2.1UDP编程232
10.2.2TCP编程233
10.3Socket编程案例精选236
10.3.1网络嗅探器236
10.3.2多进程端口扫描器237
10.3.3查看本机所有联网程序信息238
10.3.4查看局域网内IP地址与MAC地址对应关系239
10.3.5查看本机网络流量239
10.3.6局域网内服务器自动发现240
10.3.7多线程+Socket实现素数远程查询241
10.4网页内容读取与网页爬虫242
10.4.1网页内容读取与域名处理基础知识242
10.4.2网页爬虫实战244
本章小结246
习题247第11章安卓平台的Python编程248
11.1QPython简介248
11.2安卓应用开发案例249
本章小结253
习题253第12章Windows系统编程254
12.1注册表编程254
12.2创建可执行文件257
12.3调用外部程序258
12.4创建窗口262
12.5判断操作系统的版本265
12.6系统运维266
12.6.1Python扩展库psutil266
12.6.2使用pywin32实现事件查看器268
12.6.3切换用户登录身份270
本章小结272
习题272第13章多线程与多进程编程273
13.1threading模块273
13.2Thread对象274
13.2.1Thread对象中的方法274
13.2.2Thread对象中的daemon属性275
13.3线程同步技术277
13.3.1Lock/RLock对象277
13.3.2Condition对象279
13.3.3queue对象281
13.3.4Event对象282
13.3.5Semaphore与BoundedSemaphore283
13.3.6Barrier对象284
13.4多进程编程285
13.4.1创建与启动进程285
13.4.2进程间数据交换287
13.4.3进程同步290
13.4.4标准库subprocess290
本章小结292
习题293第14章数据库编程294
14.1SQLite应用294
14.1.1Connection对象295
14.1.2Cursor对象295
14.1.3Row对象298
14.2访问其他类型数据库300
14.2.1操作Access数据库301
14.2.2操作MS SQL Server数据库302
14.2.3操作MySQL数据库303
本章小结304
习题305第15章多媒体编程306
15.1图形编程306
15.1.1创建图形编程框架306
15.1.2绘制文字307
15.1.3绘制图形308
15.1.4纹理映射309
15.1.5处理键盘/鼠标事件311
15.2图像编程311
15.2.1图像处理模块pillow功能简介311
15.2.2使用pillow计算椭圆中心313
15.2.3使用pillow动态生成比例分配图314
15.2.4使用pillow生成验证码图片315
15.3音乐编程317
15.3.1音乐播放317
15.3.2wav波形音乐文件处理319
15.4语音识别321
15.5视频处理和摄像头接口调用324
15.5.1opencv应用324
15.5.2moviepy应用325
本章小结327
习题327第16章逆向工程与软件分析328
16.1主流项目与插件简介328
16.1.1主流项目329
16.1.2常用插件329
16.2IDAPython与Immunity Debugger编程330
16.2.1IDAPython编程330
16.2.2Immunity Debugger编程335
16.3Windows平台软件调试原理340
16.3.1Windows调试接口340
16.3.2调试事件341
16.3.3进程调试342
16.3.4线程环境343
16.3.5断点344
16.4案例精选345
本章小结347
习题348第17章数据分析、科学计算与可视化349
17.1NumPy简单应用349
17.2SciPy简单应用356
17.2.1常数与特殊函数357
17.2.2SciPy中值滤波358
17.2.3使用SciPy进行多项式计算与符号计算359
17.3Matplotlib案例精选360
17.3.1绘制带有中文标签和图例的正弦和余弦曲线360
17.3.2绘制散点图360
17.3.3绘制饼状图361
17.3.4在图例中显示公式363
17.3.5多个图形单独显示363
17.3.6绘制有描边和填充效果的柱状图365
17.3.7使用雷达图展示学生成绩366
17.3.8绘制三维曲面366
17.3.9绘制三维曲线368
17.3.10设置图例样式369
17.4数据分析模块pandas369
17.5统计分析模块statistics373
本章小结375
习题375第18章密码学编程377
18.1安全哈希算法377
18.2对称密钥密码算法DES和AES377
18.3非对称密钥密码算法RSA与数字签名算法DSA379
18.3.1RSA379
18.3.2DSA381
本章小结381
习题381参考文献382