Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

Python函数式编程(第2版) PDF 下载


分享到:
时间:2022-03-12 08:46来源:http://www.java1234.com 作者:转载  侵权举报
Python具备函数式编程的许多核心特征,因此可以借鉴其他函数式语言的设计模式和编程技术,编写出简洁优雅的代码。本书首先介绍函数式编程的一般概念及特点,然后讲解迭代器、生
失效链接处理
Python函数式编程(第2版)  PDF 下载

下载地址:
版权归出版社和原作者所有,链接已删除,请购买正版

用户下载说明:

电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
http://product.dangdang.com/1072748367.html
 

相关截图:

 

资料简介:

Python具备函数式编程的许多核心特征,因此可以借鉴其他函数式语言的设计模式和编程技术,编写出简洁优雅的代码。本书首先介绍函数式编程的一般概念及特点,然后讲解迭代器、生成器表达式、内置函数、常用高阶函数、递归与归约、实用模块和装饰器的用法,以及避开Python严格求值顺序的变通方法、Web服务设计方法和一些优化技巧。


资料目录:

前言
 
第 1章 函数式编程概述 1
 
1.1 编程范式 1
 
1.2 细分过程范式 2
 
1.2.1 使用函数式范式 3
 
1.2.2 使用混合范式 5
 
1.2.3 对象的创建过程 6
 
1.2.4 乌龟塔 7
 
1.3 函数式编程经典示例 7
 
1.4 EDA 10
 
1.5 小结 10
 
第 2章 函数式编程的特点 11
 
2.1 头等函数 11
 
2.1.1 纯函数 12
 
2.1.2 高阶函数 13
 
2.2 不可变数据结构 13
 
2.3 严格求值与非严格求值 14
 
2.4 用递归代替循环语句 16
 
2.5 函数类型系统 19
 
2.6 回到初 19
 
2.7 几个高级概念 20
 
2.8 小结 20
 
第3章 函数、迭代器和生成器 22
 
3.1 编写纯函数 23
 
3.2 函数作为头等对象 24
 
3.3 使用字符串 25
 
3.4 使用元组和命名元组 26
 
3.4.1 使用生成器表达式 27
 
3.4.2 生成器的局限 30
 
3.4.3 组合生成器表达式 31
 
3.5 使用生成器函数清洗原始数据 31
 
3.6 使用列表、字典和set 33
 
3.6.1 使用状态映射 36
 
3.6.2 使用bisect模块创建映射 37
 
3.6.3 使用有状态的set 38
 
3.7 小结 39
 
第4章 使用集合 40
 
4.1 函数分类概览 40
 
4.2 使用可迭代对象 41
 
4.2.1 解析XML文件 42
 
4.2.2 使用高级方法解析文件 43
 
4.2.3 组对序列元素 45
 
4.2.4 显式使用iter()函数 47
 
4.2.5 扩展简单循环 48
 
4.2.6 将生成器表达式应用于标量函数 51
 
4.2.7 用any()函数和all()函数进行归约 52
 
4.2.8 使用len()和sum() 54
 
4.2.9 使用汇总和计数进行统计分析 54
 
4.3 使用zip()函数实现结构化和平铺序列 56
 
4.3.1 将压缩序列解压 58
 
4.3.2 平铺序列 58
 
4.3.3 结构化一维序列 59
 
4.3.4 结构化一维序列的另一种方式 61
 
4.4 使用reversed()函数改变顺序 62
 
4.5 使用enumerate()函数包含下标值 63
 
4.6 小结 63
 
第5章 高阶函数 64
 
5.1 用max()函数和min()函数寻找极值 65
 
5.2 使用Python匿名函数 67
 
5.3 lambda与lambda算子 69
 
5.4 使用map()将函数应用于集合 69
 
5.5 使用map()函数处理多个序列 70
 
5.6 使用filter()函数接收或舍弃数据 72
 
5.7 使用filter()函数检测异常值 73
 
5.8 在iter()函数中使用哨兵值 74
 
5.9 使用sorted()函数将数据排序 75
 
5.10 编写高阶函数 75
 
5.11 编写高阶映射和过滤函数 76
 
5.11.1 拆包并映射数据 77
 
5.11.2 打包多项数据并映射 79
 
5.11.3 平铺数据并映射 80
 
5.11.4 过滤并结构化数据 81
 
5.12 编写生成器函数 83
 
5.13 使用可调用对象构建高阶函数 84
 
5.14 设计模式回顾 87
 
5.15 小结 88
 
第6章 递归与归约 89
 
6.1 简单数值递归 89
 
6.1.1 实现尾调用优化 90
 
6.1.2 保持递归形式 91
 
6.1.3 处理复杂的尾调用优化 92
 
6.1.4 使用递归处理集合 93
 
6.1.5 集合的尾调用优化 94
 
6.1.6 集合的归约与折叠:从多个到一个 95
 
6.2 group-by归约:从多到少 96
 
6.2.1 用Counter做映射 97
 
6.2.2 用排序构建映射 98
 
6.2.3 使用键值分组或者分区数据 99
 
6.2.4 编写更通用的group-by归约 102
 
6.2.5 编写高阶归约 103
 
6.2.6 编写文件解析器 104
 
6.3 小结 109
 
第7章 元组处理技术 110
 
7.1 使用元组收集数据 110
 
7.2 使用命名元组收集数据 112
 
7.3 使用函数构造器创建命名元组 115
 
7.4 使用多种元组结构代替状态类 115
 
7.4.1 赋等级值 118
 
7.4.2 用包装代替状态变化 120
 
7.4.3 以多次包装代替状态变化 121
 
7.4.4 计算斯皮尔曼等级顺序相关度 122
 
7.5 多态与类型匹配 123
 
7.6 小结 128
 
第8章 itertools模块 129
 
8.1 使用无限迭代器 130
 
8.1.1 用count()计数 130
 
8.1.2 使用实数参数计数 131
 
8.1.3 用cycle()循环迭代 132
 
8.1.4 用repeat()重复单个值 134
 
8.2 使用有限迭代器 135
 
8.2.1 用enumerate()添加序号 135
 
8.2.2 用accumulate()计算汇总值 137
 
8.2.3 用chain()组合多个迭代器 138
 
8.2.4 用groupby()切分迭代器 139
 
8.2.5 用zip_longest()和zip()合并迭代器 140
 
8.2.6 用compress()过滤 140
 
8.2.7 用islice()选取子集 141
 
8.2.8 用dropwhile()和takewhile()过滤状态 142
 
8.2.9 基于filterfalse()和filter()的两种过滤方法 143
 
8.2.10 将starmap()和map()应用于数据 144
 
8.3 使用tee()函数克隆迭代器 145
 
8.4 itertools模块代码范例 146
 
8.5 小结 147
 
第9章 高级itertools技术 148
 
9.1 笛卡儿积 148
 
9.2 对积进行归约 149
 
9.2.1 计算距离 150
 
9.2.2 获得所有像素和颜色 152
 
9.2.3 性能分析 153
 
9.2.4 重构问题 154
 
9.2.5 合并两种变换 155
 
9.3 排列集合元素 156
 
9.4 生成所有组合 157
 
9.5 代码范例 159
 
9.6 小结 160
 
第 10章 functools模块 161
 
10.1 函数工具 161
 
10.2 使用lru_cache保存已有计算结果 162
 
10.3 使用total_ordering定义类 163
 
10.4 使用partial()函数应用部分参数 166
 
10.5 使用reduce()函数归约数据集 167
 
10.5.1 合并map()和reduce() 168
 
10.5.2 使用reduce()函数和partial()函数 170
 
10.5.3 使用map()函数和reduce()函数清洗数据 170
 
10.5.4 使用groupby()函数和reduce()函数 171
 
10.6 小结 173
 
第 11章 装饰器设计技术 174
 
11.1 作为高阶函数的装饰器 174
 
11.2 横切关注点 178
 
11.3 复合设计 178
 
11.4 向装饰器添加参数 181
 
11.5 实现更复杂的装饰器 183
 
11.6 复杂设计注意事项 184
 
11.7 小结 187
 
第 12章 multiprocessing和threading模块 188
 
12.1 函数式编程和并发 188
 
12.2 并发的意义 189
 
12.2.1 边界条件 189
 
12.2.2 进程或线程间共享资源 190
 
12.2.3 从何处受益 191
 
12.3 使用多进程池和任务 191
 
12.3.1 处理大量大型文件 192
 
12.3.2 解析日志文件之收集行数据 193
 
12.3.3 解析日志行为命名元组 194
 
12.3.4 解析Access对象的其他字段 196
 
12.3.5 过滤访问细节 199
 
12.3.6 分析访问细节 200
 
12.3.7 完整的分析过程 201
 
12.4 使用多进程池进行并发处理 202
 
12.4.1 使用apply()发送单个请求 204
 
12.4.2 使用map_async()、starmap_async()和starmap_async()等函数 204
 
12.4.3 更复杂的多进程架构 205
 
12.4.4 使用concurrent.futures模块 205
 
12.4.5 使用concurrent.futures线程池 206
 
12.4.6 使用threading模块和queue模块 206
 
12.4.7 设计并发处理 207
 
12.5 小结 208
 
第 13章 条件表达式和operator模块 209
 
13.1 条件表达式求值 210
 
13.1.1 使用非严格字典规则 211
 
13.1.2 过滤True条件表达式 212
 
13.1.3 寻找匹配模式 213
 
13.2 使用operator模块代替匿名函数 214
 
13.3 运算符的星号映射 215
 
13.4 使用operator模块函数进行归约 217
 
13.5 小结 218
 
第 14章 PyMonad库 219
 
14.1 下载和安装 219
 
14.2 函数式复合和柯里化 220
 
14.2.1 使用柯里化的高阶函数 221
 
14.2.2 避易就难的柯里化 223
 
14.3 函数式复合和PyMonad*运算符 223
 
14.4 函子和应用型函子 224
 
14.5 单子的bind()函数和>>运算符 228
 
14.6 模拟实现单子 229
 
14.7 单子的其他特性 232
 
14.8 小结 233
 
第 15章 Web服务的函数式设计方法 234
 
15.1 HTTP“请求 响应”模型 234
 
15.1.1 通过cookie注入状态 236
 
15.1.2 函数式设计的服务器考量 236
 
15.1.3 深入研究函数式视图 237
 
15.1.4 嵌套服务 237
 
15.2 WSGI标准 238
 
15.2.1 在WSGI处理期间抛出异常 240
 
15.2.2 实用的WSGI应用程序 242
 
15.3 将Web服务定义为函数 242
 
15.3.1 创建WSGI应用程序 243
 
15.3.2 获取原始数据 245
 
15.3.3 运用过滤器 246
 
15.3.4 序列化结果 247
 
15.3.5 序列化数据为JSON或CSV格式 248
 
15.3.6 序列化数据为XML格式 249
 
15.3.7 序列化数据为HTML 250
 
15.4 跟踪使用情况 251
 
15.5 小结 252
 
第 16章 优化与改进 254
 
16.1 记忆化和缓存 254
 
16.2 指定记忆化 256
 
16.3 尾递归优化 257
 
16.4 优化存储 258
 
16.5 优化精度 259
 
16.6 案例研究:卡方决策 259
 
16.6.1 使用Counter对象过滤和约分原始数据 260
 
16.6.2 读取汇总信息 262
 
16.6.3 Counter对象的求和计算 263
 
16.6.4 Counter对象的概率计算 264
 
16.7 计算期望值并显示列联表 265
 
16.7.1 计算卡方值 267
 
16.7.2 计算卡方阈值 267
 
16.7.3 计算不完全伽马函数 268
 
16.7.4 计算完全伽马函数 270
 
16.7.5 计算随机分布的概率 271
 
16.8 函数式编程设计模式 273
 
16.9 小结 274
 
 
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐