Python由Guido van Rossum于1989年底开始研制,第一个公开发行版本发行于1991年。Python推出不久就迅速得到了各行业人士的青睐,经过20多年的发展,Python已经渗透到计算机科学与技术、统计分析、移动终端开发、科学计算可视化、逆向工程与软件分析、图形图像处理、人工智能、游戏设计与策划、网站开发、数据爬取与大数据处理、密码学、系统运维、音乐编程、计算机辅助教育、医药辅助设计、天文信息处理、化学、生物等几乎所有专业和领域。著名搜索引擎Google的核心代码使用Python实现,迪斯尼公司的动画制作与生成采用Python实现,大部分UNIX和Linux都内建了Python环境支持,豆瓣网使用Python作为主体开发语言进行网站架构和有关应用的设计与开发,网易大量网络游戏的服务器端代码超过70%采用Python进行设计与开发,易度的PaaA企业应用云端开发平台和百度云计算平台BAE也都大量采用了Python语言,美国宇航局使用Python实现了CAD/CAE/PDM库及模型管理系统,Yahoo公司使用Python建立全球范围的站点群,微软公司的集成开发环境Visual Studio 2015开始默认支持Python语言而不需要像之前的版本一样再单独安装PTVS和IronPython插件,开源ERP系统Odoo完全采用Python语言开发,引力波数据是用Python进行处理和分析的,类似的案例数不胜数。
早在多年前Python就已经成为卡耐基梅隆大学、麻省理工学院、加州大学伯克利分校、哈佛大学等国外很多大学计算机专业或非计算机专业的程序设计入门教学语言,目前国内也有不少学校的多个专业陆续开设了Python程序设计课程。Python语言连续多年在TIOBE网站的编程语言排行榜上排名第7位或第8位,2011年1月被TIOBE网站评为2010年度语言;在2014年12月份IEEE Spectrum推出的编程语言排行榜中,Python取得了第5位的好名次;2015年12月份TIOBE编程语言排行榜上Python跃居第4位,仅次于Java、C和C++,已经成为脚本语言的标准;Top developer Languages of 2015更是把Python排到了第3位。
Python是一门免费、开源的跨平台高级动态编程语言,支持命令式编程、函数式编程,完全支持面向对象程序设计,拥有大量功能强大的内置对象、标准库和扩展库以及众多狂热的支持者,使得各领域的科研人员、策划人员甚至管理人员能够快速实现和验证自己的思路与创意。在有些编程语言中需要编写大量代码才能实现的功能,在Python中直接调用内置函数或标准库方法即可实现。Python用户只需要把主要精力放在业务逻辑的设计与实现上,在开发效率和运行效率之间达到了完美的平衡,其精妙之处令人赞叹。
Python是一门快乐、优雅的语言。与C语言系列和Java等语言相比,Python大幅度降低了学习与使用的难度。Python易学易用,语法简洁清晰,代码可读性强,编程模式非常符合人类思维方式和习惯。经常浏览Python社区的优秀代码、Python标准库和扩展库文档甚至源代码,适当了解其内部工作原理,可以帮助读者编写更加优雅的Python程序。
如果读者有其他程序设计语言的基础,那么在学习和使用Python的过程中,一定不要把其他语言的编程习惯和风格带到Python中来,那样不仅会使得代码变得非常冗长、烦琐,还可能会严重影响代码的效率。应该尽量尝试从最自然、最简洁的角度出发去思考和解决问题,这样才能写出更加优雅、更加Pythonic的代码。
本书内容组织
对于Python程序员来说,熟练运用优秀、成熟的扩展库可以快速实现业务逻辑和创意,而Python语言基础知识和基本数据结构的熟练掌握则是理解和运用其他扩展库的必备条件,并且在实际开发中建议优先使用Python内置对象和标准库对象实现预定功能。本书前8章使用大量篇幅介绍Python编程基础知识,通过大量案例演示Python语言的精妙与强大。从第9章开始介绍大量标准库和扩展库在GUI编程、网络编程、数据库编程、大数据处理、Windows系统编程、多线程与多进程编程、逆向工程与软件分析、图形图像编程、科学计算可视化、密码学编程、移动终端编程等多个领域的应用。全书共19章,主要内容组织如下。
第1章基础知识。介绍如何选择Python版本,Python对象模型,数字、字符串等基本数据类型,运算符与表达式,内置函数,基本输入输出,Python程序文件名,扩展库管理与使用,Python代码编写规范等。
第2章Python序列。讲解序列常用的方法和基本操作,成员测试运算符,切片操作,列表基本操作与常用方法,列表推导式,元组与生成器推导式,序列解包,字典、集合基本操作与常用方法,字典推导式与集合推导式,以及如何使用列表实现栈、队列、二叉树、有向图等复杂数据结构。
第3章选择与循环。讲解Python选择结构、for循环与while循环,带else子句的循环结构,break与continue语句,选择结构与循环结构的综合运用。
第4章字符串与正则表达式。讲解字符串编码格式,字符串格式化、替换、分割、连接、查找、排版等基本操作,正则表达式语法、正则表达式对象、子模式与match对象,以及Python正则表达式模块re的应用。
第5章函数设计与使用。讲解函数的定义与使用,关键参数、默认值参数、长度可变参数等不同参数类型,全局变量与局部变量,参数传递时的序列解包,return语句,lambda表达式,以及map()、reduce()、filter()、生成器与可调用对象等若干高级话题。
第6章面向对象程序设计。讲解类的定义与使用,self与cls参数,类成员与实例成员,私有成员与公有成员,继承与派生,特殊方法与运算符重载等内容。
第7章文件操作。讲解文件操作基本知识,Python文件对象,文本文件读写操作,二进制文件读写与对象序列化,文件复制、移动、重命名、文件类型检测、文件完整性检查、压缩与解压缩、文件夹大小统计、文件夹增量备份、删除指定类型的文件等内容。
第8章异常处理结构与程序调试、测试。讲解Python异常类层次结构与自定义异常类,多种不同形式的异常处理结构,使用IDLE和pdb模块调试Python程序,Python单元测试相关知识。
第9章图形界面设计。讲解如何使用Python扩展库wxPython和标准库tkinter进行GUI编程,主要包括窗体、按钮、文本框、单选钮、复选框、组合框、列表框、树形控件以及各种对话框的运用,通过大量实际案例演示基本组件的用法。
第10章网络程序设计。讲解计算机网络基础知识,TCP、UDP编程,网络嗅探器与端口扫描器设计,网页内容读取与网页爬虫设计原理,使用Flask框架开发Web应用,以及使用C#与Python混合开发Web应用。
第11章大数据处理。介绍大数据处理框架MapReduce、Hadoop和Spark的基本概念,重点介绍MapReduce和Hadoop应用。
第12章Windows系统编程。讲解注册表编程、GUI编程、系统版本判断,将Python程序打包为exe可执行文件,在Python中调用外部程序,以及Python在系统运维中的应用。
第13章多线程与多进程编程。讲解Python标准库threading和multiprocessing在多线程编程与多进程编程中的应用,以及多线程与多进程之间的数据共享与同步控制。
第14章数据库编程。介绍SQLite数据库及其相关概念,Connection对象、Cursor对象、Row对象,以及使用Python扩展库操作Access、MS SQL Server、MySQL等数据库。
第15章多媒体编程。讲解扩展库PyOpenGL在计算机图形学编程中的应用,扩展库PIL与pillow在图像编程中的应用,pygame在音乐编程中的应用,以及speech在语音识别中的应用。
第16章逆向工程与软件分析。介绍逆向工程与软件分析原理以及相关插件,IDAPython与Immunity Debugger在软件分析中的应用,以及Windows平台软件调试原理。
第17章科学计算与可视化。讲解扩展库numpy、scipy、matplotlib在科学计算与可视化领域的应用,以及标准库statistics与扩展库pandas在数据处理、统计与分析中的应用。
第18章密码学编程。以pycrypto、rsa、hashlib等模块为主讲解安全哈希算法、对称密钥密码算法DES与AES以及非对称密钥密码算法RSA与DSA的应用。
第19章安卓平台的Python编程。介绍QPython和QPython3开发环境的应用,讲解安卓平台的Python程序设计。
本书最大特点是信息量大、知识点紧凑、案例丰富、实用性强。全书200多个涉及不同行业领域的实用案例,没有多余的文字,程序输出结果或软件安装截图,充分利用宝贵的篇幅来讲解尽可能多的知识,绝对物超所值。本书作者具有16年程序设计教学经验,讲授过汇编语言、C/C++/C#、Java、PHP、Python等多门程序设计语言,编写过大量的应用程序。本书内容结合作者多年教学与开发过程中积累的许多经验和案例,并巧妙地糅合进了相应的章节。
本书对Python内部工作原理进行了一定深度的剖析,90%以上的案例均使用Python 3.5.1实现,个别案例使用Python 2.7.11实现,并适当介绍了Python代码优化和安全编程的有关知识,可以满足不同层次读者的需要。
本书适用读者
本书可以作为(但不限于):
(1) 计算机专业本科生程序设计教材或研究生必读书目。本科生建议72学时以上,讲授本书全部章节。
(2) 数字媒体技术、软件工程、网络工程、信息安全、通信工程、电子、自动化及其他工科专业本科生或研究生程序设计教材。建议64学时,讲授前9章,再根据专业特点与需要在其他章节中选讲4~5章。
(3) 会计、经济、金融、管理、心理学、统计以及其他非工科专业研究生或本科生程序设计教材。建议64学时,讲授前8章中不带星号的内容,第9章的两节中选讲一节,再根据专业特点与需要在其他章节中选讲2~3章,其余章节由学生根据兴趣自学。
(4) 非计算机相关专业本科生公共基础课程序设计教材。建议48学时边讲边练,讲授前8章中不带星号的章节,再根据需要在其他章节中选讲2~3章,其余章节可由学生根据兴趣自学。
(5) 专科院校或职业技术学院程序设计教材。建议96学时,讲授前9章中不带星号的内容以及第10、13、14、19章。
(6) Python培训用书。建议时间为一周,讲授前8章,再根据需要选讲3~5章。
(7) 具有一定Python基础的读者进阶首选学习资料。
(8) 涉及Python开发的程序员、策划人员、科研人员和管理人员阅读书目。
(9) 打算利用业余时间学习一门快乐的程序设计语言并编写几个小程序来娱乐的读者首选学习资料。
(10) 少数对编程具有浓厚兴趣和天赋的中学生课外阅读资料。
教学资源
本书提供全套教学课件、源代码、课后习题答案与分析、考试题库以及教学大纲,配套资源可以登录清华大学出版社官方网站(www.tup.com.cn)下载或与作者联系索取,作者QQ号码为306467355,微信号为Python_dfg,电子邮箱地址为dongfuguo2005@126.com。
由于时间仓促,作者水平有限,书中难免出现纰漏,不足之处还请同行指正并通过作者联系方式进行反馈与交流。作者不定期在QQ空间和微信发布和更新勘误表,并通过QQ和微信答复读者的疑问。
感谢
首先感谢父母的养育之恩,在当年那么艰苦的条件下还坚决支持我读书,没有让我像其他同龄的孩子一样辍学。感谢姐姐、姐夫多年来对我的爱护以及在老家对父母的照顾,感谢善良的弟弟、弟媳在老家对父母的照顾,正是有了你们,我才能在远离家乡的城市安心工作。感谢我的妻子在生活中对我的大力支持,也感谢懂事的女儿在我工作的时候能够在旁边安静地读书而尽量不打扰我,在定稿前和妈妈一起帮我阅读全书并检查出了几个错别字。
感谢每一位读者,感谢您在茫茫书海中选择了本书,衷心祝愿您能够从本书中受益,学到您需要的知识!同时也期待每一位读者的热心反馈,随时欢迎您指出书中的不足!
本书的出版获2014年山东省普通高校应用型人才培养专业发展支持计划项目资助。我校专业共建合作伙伴——浪潮优派科技教育有限公司总裁邵长臣先生审阅了全书,并提出很多宝贵的意见,在此致以诚挚的谢意。本书在编写出版过程中也得到清华大学出版社的大力支持和帮助,在此表示衷心的感谢。
董付国定稿于山东烟台
2016年4月
more >