百道网
 您现在的位置:Fun书 > Python带我起飞——入门、进阶、商业实战
Python带我起飞——入门、进阶、商业实战


Python带我起飞——入门、进阶、商业实战

作  者:李金洪

出 版 社:电子工业出版社

出版时间:2018年06月

定  价:79.00

I S B N :9787121343223

所属分类: 专业科技  >  计算机/网络  >  程序设计    

标  签:

[查看微博评论]

分享到:

TOP好评推荐   [展开]

TOP内容简介

本书采用“理论+实践”的形式编写,通过大量的实例(共42 个)进行讲解。

-- 书中的实例具有很强的实用性,如对医疗影像数据进行分析、制作爬虫获取股票信息、自动化实例、从一组看似混乱的数据中找出规律、制作人脸识别系统等。

-- 每章都配有同步的教学视频。视频和图书具有相同的结构,能帮助读者快速而全面地了解本章的内容。

-- 免费提供了所有案例的源代码及素材样本。这些代码和素材样本不仅方便了读者学习,而且为以后的工作提供了便利。

全书共分为 4 篇:

第1 篇,包括了解Python、配置机器及搭建开发环境、语言规则;

第2 篇,介绍了Python 语言的基础操作,包括变量与操作、控制流、函数操作、错误与异常、文件操作;

第3 篇,介绍了更高级的Python 语法知识及应用,包括面向对象编程、系统调度编程;

第4 篇,是前面知识的综合应用,包括爬虫实战、自动化实战、机器学习实战、人工智能实战。

本书结构清晰、案例丰富、通俗易懂、实用性强。

-- 特别适合Python 语言的初学和进阶读者,作为自学教程阅读。

-- 也适合社会培训学校作为培训教材使用,还适合大中专院校的相关专业作为教学参考书。

TOP作者简介

李金洪

> “大蛇智能”网站创始人、“代码医生”工作室主程序员。

> 精通Python、C、C++、汇编、Java和Go等多种编程语言。擅长神经网络、算法、协议分析、逆向工程和移动互联网安全架构等技术。

> 在深度学习领域,参与过某移动互联网后台的OCR项目、某娱乐节目机器人的语音识别和声纹识别项目,以及人脸识别、活体检测等多个项目。

> 完成过金融、安全、市政和医疗等多个领域的AI算法外包项目。

> 曾发布过两套关于CNTK深度学习框架的视频教程。出版过《深度学习之TensorFlow——入门、原理与进阶实战》一书。

TOP目录

---------------第1 篇 入门---------------

▇ 第1 章 了解Python

1.1 了解Python 的历史

1.2 Python 可以做什么

1.3 Python 在数据科学中的地位及前景

1.4 如何使用本书

▇第2 章 配置机器及搭建开发环境

★ 本章教学视频说明

2.1 Python 版本及开发环境介绍

∣2.1.1 Python 的运行方式

∣2.1.2 常见的集成开发环境(IDE)

2.2 下载及安装Anaconda

2.3 熟悉Anaconda 3 开发工具

∣2.3.1 快速了解Spyder

∣2.3.2 快速了解Jupyter Notebook

2.4 实例1:运行Python 程序,并传入参数

∣2.4.1 在Spyder 中新建Python 文件,编写代码,运行代码

∣2.4.2 用命令行启动Python 程序,并传入参数

∣2.4.3 用Spyder 启动Python 程序,并传入参数

▇ 第3 章 语言规则——Python 的条条框框

★ 本章教学视频说明

3.1 了解编程语言的分类

3.2 基础规则

∣3.2.1 了解Python 源代码相关的几个概念

∣3.2.2 语句的基本规则:变量、语句、代码块

∣3.2.3 添加注释

∣3.2.4 使用Python 的“帮助”

3.3 代码文件的结构

∣3.3.1 模块

∣3.3.2 包

3.4 模块的详细介绍

∣3.4.1 模块的作用及分类

∣3.4.2 模块的基本使用方法

∣3.4.3 模块的搜索路径

∣3.4.4 模块的属性

∣3.4.5 模块名字的可变性

∣3.4.6 模块的常规写法

3.5 模块的四种导入方式

∣3.5.1 import as 方式

∣3.5.2 from import 方式

∣3.5.3 from import * 方式

∣3.5.4 导入文件名中带空格的模块

3.6 实例2:封装获取系统信息的模块,并将其导入

∣3.6.1 在当前代码中的函数与模块中的函数同名情况下,导入模块

∣3.6.2 在模块与当前代码不在同一路径的情况下,导入模块

∣3.6.3 导入上级路径的模块

---------------第2 篇 进阶---------------

▇ 第4 章 变量——编写代码的基石

★ 本章教学视频说明

4.1 什么是变量

4.2 了解变量的规则

∣4.2.1 明白变量的本质——对象

∣4.2.2 同时定义多个变量

∣4.2.3 变量类型介绍

∣4.2.4 变量类型的帮助函数

4.3 numbers(数字)类型

∣4.3.1 获取对象的类型

∣4.3.2 算术运算符

∣4.3.3 实例3:演示“算术运算符”的使用

∣4.3.4 赋值运算符

∣4.3.5 实例4:演示“赋值运算符”的使用

∣4.3.6 比较运算符

∣4.3.7 实例5:演示“比较运算符”的使用

∣4.3.8 慎用is 函数

∣4.3.9 实例6:演示Python 的缓存机制

∣4.3.10 布尔型关系的运算符

∣4.3.11 位运算符

∣4.3.12 实例7:演示“位运算符”的使用

4.4 strings(字符串)类型

∣4.4.1 字符串的描述

∣4.4.2 转义符

∣4.4.3 屏幕I/O 及格式化

∣4.4.4 实例8:以字符串为例,演示“序列”类型的运算及操作

∣4.4.5 关于切片的特殊说明

∣4.4.6 字符串的相关函数

4.5 list(列表)类型

∣4.5.1 list 的运算及操作

∣4.5.2 list 的内置方法

∣4.5.3 实例9:演示list 使用中的技巧及注意事项

∣4.5.4 列表嵌套

∣4.5.5 实例10:使用list 类型实现队列和栈

∣4.5.6 实例11:使用函数filter 筛选列表——筛选学生列表中的偏科学生名单

4.6 tuple(元组)类型

∣4.6.1 tuple 的描述

∣4.6.2 运算及操作

∣4.6.3 实例12:演示tuple 的用法

4.7 set(集合)类型

∣4.7.1 set 的描述

∣4.7.2 set 的运算

∣4.7.3 set 的内置方法

∣4.7.4 不可变集合

4.8 dictionary(字典)类型

∣4.8.1 字典的描述

∣4.8.2 字典的运算

∣4.8.3 字典的内置方法

4.9 对组合对象进行“深拷贝”和“浅拷贝”

∣4.9.1 浅拷贝

∣4.9.2 深拷贝

▇ 第5 章 控制流——控制执行顺序的开关

★ 本章教学视频说明

5.1 if 语句

∣5.1.1 语句形式

∣5.1.2 演示if 语句的使用

∣5.1.3 实例13:根据来访人的性别选择合适的称呼

5.2 while 语句

∣5.2.1 语句形式

∣5.2.2 演示while 语句的使用

∣5.2.3 实例14:将十进制数转化为二进制数

5.3 for 语句

∣5.3.1 语句形式

∣5.3.2 在for 循环中,使用切片

∣5.3.3 在for 循环中,使用内置函数range

∣5.3.4 实例15:利用循环实现冒泡排序

∣5.3.5 在for 循环中,使用内置函数zip

∣5.3.6 在for 循环中,使用内置函数enumerate

5.4 对循环进行控制——break、continue、pass 语句

5.5 实例16:演示人机对话中的控制流程(综合应用前面语句)

5.6 利用for 循环实现列表推导式

5.7 实例17:利用循环来打印“九九乘法表”

5.8 理解for 循环的原理——迭代器

▇ 第6 章 函数——功能化程序片段的封装

★ 本章教学视频说明

6.1 函数的基本概念

∣6.1.1 函数的定义

∣6.1.2 函数的组成部分

∣6.1.3 函数的参数:形参与实参

∣6.1.4 函数的返回值

∣6.1.5 函数的属性

∣6.1.6 函数的本质

∣6.1.7 函数的分类

∣6.1.8 实例18:打印两个心形图案

6.2 定义参数及调用函数

∣6.2.1 函数参数的定义方法与调用形式

∣6.2.2 在函数调用中检查参数

∣6.2.3 函数调用中的参数传递及影响

6.3 匿名函数与可迭代函数

∣6.3.1 匿名函数与可迭代函数的介绍

∣6.3.2 匿名函数与reduce 函数的组合应用

∣6.3.3 匿名函数与map 函数的组合应用

∣6.3.4 匿名函数与filter 函数的组合应用

∣6.3.5 可迭代函数的返回值

6.4 偏函数

6.5 递归函数

6.6 eval 与exec 函数

∣6.6.1 eval 与exec 的区别

∣6.6.2 eval 与exec 的定义

∣6.6.3 exec 和eval 的使用经验

∣6.6.4 eval 与exec 的扩展知识

6.7 实例19:批量测试转化函数(实现“组合对象”与“字符串”的相互转化)

∣6.7.1 编写两个功能函数

∣6.7.2 编写单元测试用例

∣6.7.3 批量运行单元测试用例

6.8 生成器函数

∣6.8.1 生成器与迭代器的区别

∣6.8.2 生成器函数

∣6.8.3 生成器表达式

6.9 变量的作用域

∣6.9.1 作用域介绍

∣6.9.2 global 语句

∣6.9.3 nonlocal 语句

6.10 工厂函数

∣6.10.1 普通工厂函数的实现

∣6.10.2 闭合函数(closure)

∣6.10.3 装饰器(decorator)

∣6.10.4 @修饰符

∣6.10.5 更高级的装饰器

∣6.10.6 解决“同作用域下默认参数被覆盖”问题

▇ 第7 章 错误与异常——调教出听话的程序

★ 本章教学视频说明

7.1 错误的分类

∣7.1.1 语法错误

∣7.1.2 运行时错误

7.2 异常的基本语法

∣7.2.1 同时处理多个异常

∣7.2.2 异常处理中的else 语句

∣7.2.3 输出未知异常

∣7.2.4 输出异常的详细信息

7.3 捕获与处理异常

∣7.3.1 异常的处理流程

∣7.3.2 try 语句的工作原理

∣7.3.3 一些常见的异常

7.4 创建异常

∣7.4.1 创建异常的方法

∣7.4.2 创建异常举例

7.5 异常的最终处理(清理动作)

∣7.5.1 finally 的使用场景

∣7.5.2 finally 与else 的区别

7.6 判定条件的正确性(断言)

∣7.6.1 断言的表达形式

∣7.6.2 带错误信息的断言语句

7.7 实例20:如HTTP 请求失败,实现“重试”功能

∣7.7.1 使用装饰器实现失败重试

∣7.7.2 编写简单爬虫

∣7.7.3 传入正确的目的地址,开始爬取

∣7.7.4 传入错误的目的地址,验证“重试”功能

▇ 第8 章 文件操作——数据持久化的一种方法

★ 本章教学视频说明

8.1 文件的基本操作

∣8.1.1 读写文件的一般步骤

∣8.1.2 打开文件

∣8.1.3 具体读写

∣8.1.4 关闭文件

8.2 文件对象的方法

∣8.2.1 文件对象的常用方法介绍

∣8.2.2 把文件对象当作迭代器来读取

8.3 实例21:带有异常处理的文件操作

8.4 使用with 语句简化代码

∣8.4.1 实例22:使用with 语句操作文件

∣8.4.2 with 语法的原理

8.5 实现字符串与二进制数的相互转化

∣8.5.1 将字符串转二进制数

∣8.5.2 将二进制数转字符串

8.6 将任意对象序列化

∣8.6.1 pickle 函数

∣8.6.2 实例23:用pickle 函数实现元组与“二进制对象”“二进制对象文件”之间的转换

∣8.6.3 序列化的扩展方法(ZODB 模块)

8.7 实例24:批量读取及显示CT 医疗影像数据

∣8.7.1 DICOM 介绍

∣8.7.2 Python 中的DICOM 接口模块

∣8.7.3 编写代码以载入DICOM 文件

∣8.7.4 读取DICOM 中的数值

∣8.7.5 显示单张DICOM 数据图像

∣8.7.6 批量生成DICOM 数据图像

---------------第3 篇 高阶---------------

▇ 第9 章 类——面向对象的编程方案

★ 本章教学视频说明

9.1 类的相关术语及实现

∣9.1.1 创建类

∣9.1.2 创建类属性

∣9.1.3 定义类的动态属性

∣9.1.4 限制类属性(__slots__)

9.2 实例化类对象

∣9.2.1 带有初始值的实例化

∣9.2.2 class 中的self

∣9.2.3 类方法(@classmethod)与静态方法(@staticmethod)

∣9.2.4 类变量与实例变量的区别

∣9.2.5 销毁类实例化对象

9.3 类变量的私有化类属性

∣9.3.1 公有化(public)与私有化(private)

∣9.3.2 私有化的实现

∣9.3.3 使用装饰器技术实现类的私有化(@property)

9.4 实现子类

∣9.4.1 继承

∣9.4.2 实例25:演示类的继承

∣9.4.3 super 函数

∣9.4.4 实例26:演示super 函数的功能

9.5 类相关的常用内置函数

∣9.5.1 判断实例(isinstance)

9.5.2 判断子类(issubclass)

∣9.5.3 判断类实例中是否含有某个属性(hasattr)

∣9.5.4 获得类实例中的某个属性(getattr)

∣9.5.5 设置类实例中的某个属性值(setattr)

9.6 重载运算符

∣9.6.1 重载运算符的方法与演示

∣9.6.2 可重载的运算符

9.7 包装与代理

∣9.7.1 包装

∣9.7.2 代理

∣9.7.3 实例27:使用代理的方式实现RESTful API 接口

9.8 自定义异常类

∣9.8.1 自定义异常类的方法

∣9.8.2 实例28:自定义异常类的多重继承与使用

9.9 支持with 语法的自定义类

∣9.9.1 实现支持with 语法的类

∣9.9.2 实例29:代码实现自定义类,并使其支持with 语法

9.10 “自定义迭代器类”的实现与调试技巧

∣9.10.1 实例30:自定义迭代器,实现字符串逆序

∣9.10.2 调试技巧

9.11 元类(MetaClass)

∣9.11.1 Class 的实现原理

∣9.11.2 元类的介绍

▇ 第10 章 系统调度——实现高并发的处理任务

★ 本章教学视频说明

10.1 进程与线程

10.2 线程

∣10.2.1 线程的创建及原理

∣10.2.2 互斥锁

∣10.2.3 实例31:使用信号量来同步多线程间的顺序关系

∣10.2.4 实例32:实现基于事件机制的消息队列

∣10.2.5 实例33:使用条件锁同步多线程中的生产者与消费者关系

∣10.2.6 实例34:创建定时器触发程序,在屏幕上输出消息

∣10.2.7 实例35:使用线程池提升运行效率

∣10.2.8 需要创建多少个线程才算合理

10.3 进程

∣10.3.1 实例36:创建多进程的程序

∣10.3.2 多进程与多线程的区别

10.4 协程

∣10.4.1 协程的相关概念及实现步骤

∣10.4.2 实例37:使用协程实现“任务提交”与“结果接收”

10.5 应该选择线程,还是协程

10.6 实例38:使用协程批量修改文件扩展名

---------------第4 篇 商业实战---------------

▇ 第11 章 爬虫实战(实例39):批量采集股票数据,并保存到Excel 中

11.1 爬取股票代码

∣11.1.1 找到目标网站

∣11.1.2 打开调试窗口,查看网页代码

∣11.1.3 在网页源码中找到目标元素

∣11.1.4 分析目标源代码,找出规律

∣11.1.5 编写代码抓取股票代码

∣11.1.6 运行代码,显示结果

11.2 爬取股票内容

∣11.2.1 编写代码抓取批量内容

∣11.2.2 运行代码显示结果

11.3 爬虫项目的其他技术

▇ 第12 章 自动化实战(实例40):读取Excel 数据文件,并用可视化分析

12.1 使用Pandas 读取Excel 文件,并用Matplotlib 生成大盘走势图

12.2 使用Pandas 处理数据并绘制成图

∣12.2.1 使用Pandas 处理数据

∣12.2.2 绘制直方图和折线图

12.3 自动化数据处理的其他技术

▇ 第13 章 机器学习实战(实例41):从一组看似混乱的数据中找出y≈2x 的规律 .8

13.1 准备数据

13.2 训练模型并实现可视化

∣13.2.1 训练模型

∣13.2.2 利用模型进行预测

∣13.2.3 了解线性回归模型的内部原理

∣13.2.4 将模型可视化

13.3 评估模型

∣13.3.1 评估模型的基本思路

∣13.3.2 用代码实现模型评估

13.4 保存模型,应用模型

13.5 机器学习的方向

▇ 第14 章 人工智能实战(实例42):基于人脸识别的“来访登记系统”

14.1 安装案例所依赖的模块

14.2 安装及使用dlib 模块

14.3 安装及使用face_recognition 模块

14.4 安装及使用opencv 模块

14.5 安装及使用yagmail 模块

14.6 详细设计

∣14.6.1 需求描述

∣14.6.2 定义系统的输入和输出

∣14.6.3 系统规则及约束

∣14.6.4 结构体设计

∣14.6.5 软件的主体架构图

∣14.6.6 软件的主体流程介绍

14.7 编码实现

∣14.7.1 导入模块

∣14.7.2 定义结构体

∣14.7.3 实现发送邮件函数

∣14.7.4 实现邮件内容生成函数

∣14.7.5 实现过滤并保存来访记录的函数

∣14.7.6 实现定时器处理函数

∣14.7.7 在主线程中启动定时器线程

∣14.7.8 实现并调用函数载入人脸库

∣14.7.9 在主循环里调用摄像头,并进行人脸识别

14.8 运行程序

14.9 下一步对系统的改进

附录A 内置函数

 

TOP书摘

5.2  while语句

While语句用来表述一个循环执行的代码流程。

5.2.1  语句形式

语句的形式为:

while 条件一: 

    statements1 

该语句的执行过程,可以分解成如下步骤:

(1)执行条件一判断语句,看是否返回True。

(2)如果返回True,则执行下面的statements1代码。

(3)执行完statements1的代码后,再回到第(1)步。

(4)如果第(1)步返回False,则整个语句结束。

statements1属于while的子代码块,每一行的开头都需要缩进。

5.2.2  演示while语句的使用

下面通过代码演示if语句的用法。

c=4                           #定义一个变量c

while c>0:                  #使用while循环。当c大于0,就执行下面语句

    print(c)              #输出c的值

    c -=1                   #c自减1

在上面代码中,while的循环条件是c大于0。在while循环体里,每次都会打印出c的值,并将c自身减1。代码运行后输出如下:

4

3

2

1

变量c的初始值为4。c经过4次减1操作将会变为0,不符合while的条件,于是结束循环。

5.2.3  实例14:将十进制数转化为二进制数

下面通过实例演示while的使用。

实例描述

通过输入函数获取一个十进制数值,并将其转换为二进制数并输出到屏幕。

转换的原理是:将输入的十进制数值循环地除以2,直到返回的结果商为0为止。这期间,每次除2的余数就是转换后的二进制结果。使用变量a来接收input函数接到的键盘输入,并将其转化为整型,然后通过while循环来处理。代码如下:

代码5-2:将十进制数转化成二进制数

a = input("请输入一个十进制数:")                        #获取一个十进制数

d=int(a)                                                                     #将输入的字符串转为整型

s=""

while d!=0:                                                               #使用while循环,直到d的值为0

    d,f=divmod(d,2)                                             #除以2,并返回除数和余数

    s=str(f)+s                                               #余数作为转换后的二进制数,除数作为循环条件

print(s)                                                                 #将结果输出

上面代码运行后,输出如下结果:

请输入一个十进制数:

这时,程序会挂起,等待用户输入。通过键盘输入“6”并按Enter键。程序继续执行,输出如下结果:

110

结果显示为110。正是数值6由十进制转化成二进制数的结果。

 

4.5.6  实例11:使用函数filter筛选列表——筛选学生列表中的偏科学生名单

对于序列数据进行过滤,是个很常用的功能。在Python中提供了一个内置函数filter,可以很方便地对序列数据进行过滤。因为该函数是根据自定义的过滤函数进行过滤操作,所以支持更加灵活的过滤规则。下面通过实例来演示。

实例描述

定义一个list变量,里面放置若干学生成绩的信息(包括语文、英语、数学)。通过编写代码筛选出偏科的学生名单。偏科的规则定义如下:

(1)有两科成绩在80分以上,并且有一科在60分以下。

(2)有一科成绩在90分上,并且另外两科成绩都在在60分以下。

(3)有一科成绩在90分以上,并且三科的平均分在70分以下。

为了实现例子中的功能,代码中用到了几个目前没有学到的知识点。读者可以先了解一下,有个印象,看不懂没关系,后面还会详细讲解。

首先是模拟实现一部分的学生成绩数据,接着编写过滤函数,最后使用filter对数据进行过滤。

1.模拟学生成绩

直接使用列表来实现学生成绩的模拟。代码如下:

代码4-9:筛选学生列表中的偏科的名单

scores = [("Emma",89,90,59),

("Edith",99,49,59),

("Sophia",99,60,20),

("May",40,94,59),

("Ashley",89,90,59),

("Amy",89,90,69),

("Lucy",79,90,59),

("Gloria",85,90,59),

("Abby",89,91,90),]

代码中,列表scores内部的元素为每个学生的学习成绩。每个元素的表现形式都是由括号括起来的。这种被括号括起来的组合类型,叫做元组。这里只是了解一下就好,在4.5节还会详细介绍。

2.编写过滤函数实现偏科规则的判定

编写函数handle_filter,函数的参数为某一个学生的信息,即scores里面的一个元素。在函数中,先使用sorted函数对该学生的三科成绩进行排序。接着通过三个if语句完成偏科规则的判断。只要符合其中一种,就会让程序返回一个True。如果三种规则都不满足,则返回False。

代码4-9:筛选学生列表中的偏科的名单(续)

def handle_filter(a):

    s = sorted(a[1:])                          #对三科成绩进行排序

    if s[-2]>80 and s[0]<60:  #有两科成绩在80分以上,并且有一科在60分以下的

        return True

    if s[-1]>90 and s[1]<60:    #有一科成绩在90分上,并且另外两科成绩都在60分以下的

        return True

    if s[-2]>80 and sum(s)/len(s)<60:#有一科成绩在90分以上,并且三科的平均分在70分以下的

        return True

    return False

这部分的代码涉及到了sorted函数的调用(sorted属于内置函数,会在“附录A”中的“3.  序列操作内置函数”中介绍)、if语句的知识(见第5章的内容)。读者可以先简单知道这么用,等学到后面自然会明白。

3.使用filter函数对列表数据进行过滤

filter函数的作用是,循环列表中的每一个元素,依次将元素传入过滤函数中执行。如果返回值为True,则将其保留;如果返回值为Flase,则将其忽略。具体代码如下:

代码4-9:筛选学生列表中的偏科的名单(续)

aa = list(filter(handle_filter,scores))

print(aa)

将filter函数的返回值传入list函数,是要把filter的返回值转化为列表。Filter中传入了两个参数,第一个为过滤处理函数,第二个为要处理的数据。

代码执行后,可以看到有如下结果输出:

[('Emma', 89, 90, 59), ('Edith', 99, 49, 59), ('May', 40, 94, 59), ('Ashley', 89, 90, 59), ('Gloria', 85, 90, 59)]

结果是经过代码进行过滤后的学生成绩数据,这就是符合规则过滤出来的偏科学生。

注意:

本例子主要是了解列表的使用场景,以及在解决问题中列表所充当的角色。

里面涉及超出列表以外的知识点,在本书后文均介绍,读者不用急于弄懂。

关于filter的更多内容可以参考书中“第6章  函数操作”中的知识。

TOP 其它信息

页  数:352

开  本:16

加载页面用时:154.8001