近几年随着人工智能的火爆,Python迅速升温,成为人工智能等方向的首选编程语言。Python语言简洁优雅,开发效率高,拥有丰富而强大的第三方库,广泛应用于数据科学、网络爬虫、Web开发和自动化运维等方面。
为了方便零基础的读者快速掌握Python语言,特编写此书。
本书基于Python 3.6.4,采用案例驱动法,详细介绍了Python语言的基础知识和编程思想。全书共10章,具体章节内容介绍如下。
第1章Python语言概述。本章主要介绍Python语言的发展、版本、特点,Python和集成开发环境PyCharm的安装等,并通过三个有趣的案例帮助读者对Python语言有个感性的认知。
第2章基础语法。通过“求出一个三位自然数各个位上的数字”和“判断一个给定年份是否为闰年”两个案例,讲解Python语言的注释、变量、常用数据类型、运算符和常用内置函数等,并列出Python编码规范,旨在一开始就培养读者的编程规范意识。
第3章流程控制语句。通过“三个数中找最大”“求100以内所有奇数的和”“猜数游戏”“百钱百鸡”4个案例,重点介绍if选择语句和while、for循环语句,并对案例实现一题多解,开拓读者的思路。
第4章字符串与正则表达式。借助于“从豆瓣读书的相关语句中提取作者等信息”和“从豆瓣电影网的HTML语句中提取电影名称和评价人数”两个案例,带领读者学习字符串的相关知识和操作,编写了一个简单的爬虫程序,本章的难点是使用正则表达式实现字符串的查找、替换和分割操作。
第5章数据结构。通过“模拟评委打分”“奇偶位置交换”“奇偶数交换”“不同时间段显示不同问候语”“个数统计”和“构造没有重复元素的数据集”6个案例,重点介绍列表、元组、字典和集合这4种常用的数据结构,并对Python语言中的重要术语——可迭代对象和迭代器进行了初次介绍,最后给出了一个编写简单爬虫程序的案例。本章内容是学习Python的重点。
第6章函数。通过“发红包”“统计高频词”“增加函数计时功能”3个案例,循序渐进地讲解函数的定义及调用、4种参数类型、lambda表达式、变量作用域、函数嵌套、闭包及装饰器。本章重在思想层面的理解,在编程过程中引导读者提出问题、分析问题和解决问题,锻炼读者从实际问题中抽取出相对独立的功能并定义为函数的基本编程能力。本章的难点是装饰器。
第7章异常处理。通过“猜数游戏”和“限定范围的猜数”两个案例,详细介绍常见异常、异常处理的try-except结构、主动抛出异常的raise和assert语句。
第8章文件操作。通过“英语四级真题的词频统计”和“文件批量重命名”两个案例,介绍文本文件的打开、读取、复制、重命名等基本操作。
第9章模块和包。通过“导入模块”和“导入包”两个案例,重点讲解模块和包的作用及各种导入方法。
第10章面向对象编程。通过“设计‘人’类”“设计不同类型的‘员工’类”“处理来自不同数据源的书评”三个案例,详细介绍面向对象编程思想的相关概念和理论,类的定义,继承和多态的含义、作用及实现,并从类的角度重新阐释可迭代对象、迭代器和生成器。
本书具有以下特点。
1)注重思维的培养。以案例为切入点,带领读者分析问题、解决问题,注重对思考能力和编程思维的培养。
2)以案例为导向。本书内容围绕着一个个案例来组织编写,每个案例分为案例描述、相关知识和案例实现。以案例为导向的方式更适合初学者快速入门。
3)注重实用性。本书案例多来自爬虫、机器学习、Web开发等实际场景。对知识的讲解偏向于实际应用。
4)编码规范。强调编码规范性,注重Pythonic编程风格的养成。
5)代码量丰富,代码简洁优雅。本书除了30个案例外,还提供了丰富的实例,程序代码力求简洁优雅。
本书由张宗霞主编,项雪琰、张静参与编写。第1章、第2章、第3章和第4.1节由项雪琰编写,第4.2节、第5章、第6章和第10章由张宗霞编写,第7章、第8章和第9章由张静编写。在此对两位参编近一年来的辛勤付出表示由衷的感谢。
本书得以出版,要感谢机械工业出版社编辑的帮助和付出的努力,感谢董付国老师的指引和帮助。另外,此书中有个别代码和案例参考自网络,其中案例3的代码引自Lucky En-terprise的博客中《用python绘制小猪佩奇》(https://www.cnblogs.com/qq1079179226/p/10527251.html)一文,10.2.2.1继承中的【samplecode10_1】和此代码的执行顺序图10-2引自Huang Huang的博客中《Python:super没那么简单》(https://mozillazg.com/2016/12/python-super-is-not-as-simple-as-you-thought.html),案例15和案例30参考Piglei所写的《Python工匠:容器的门道》(https://www.zlovezl.cn/articles/mastering-container-types/),感谢原作者的分享。
由于编者水平有限,书中难免有错误或纰漏之处,敬请读者批评与指正。
张宗霞