注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)Python函數(shù)式編程(第2版)

Python函數(shù)式編程(第2版)

Python函數(shù)式編程(第2版)

定 價(jià):¥79.00

作 者: [美] 史蒂文·洛特(Steven F.Lott) 著,李超,陳文浩 譯
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787115520173 出版時(shí)間: 2019-10-01 包裝: 平裝
開本: 16開 頁數(shù): 275 字?jǐn)?shù):  

內(nèi)容簡介

  Python具備函數(shù)式編程的許多核心特征,因此可以借鑒其他函數(shù)式語言的設(shè)計(jì)模式和編程技術(shù),編寫出簡潔優(yōu)雅的代碼。本書首先介紹函數(shù)式編程的一般概念及特點(diǎn),然后講解迭代器、生成器表達(dá)式、內(nèi)置函數(shù)、常用高階函數(shù)、遞歸與歸約、實(shí)用模塊和裝飾器的用法,以及避開Python嚴(yán)格求值順序的變通方法、Web服務(wù)設(shè)計(jì)方法和一些優(yōu)化技巧。

作者簡介

  史蒂文·洛特(Steven F. Lott),軟件工程師、架構(gòu)師、技術(shù)作家,20世紀(jì)70年代開始編程生涯,參與過100多個(gè)各種規(guī)模的項(xiàng)目研發(fā)。在使用Python解決業(yè)務(wù)問題方面,也有十余年經(jīng)驗(yàn)。另著有《Python面向?qū)ο缶幊讨改稀返取?/div>

圖書目錄

前言
第 1章 函數(shù)式編程概述 1
1.1 編程范式 1
1.2 細(xì)分過程范式 2
1.2.1 使用函數(shù)式范式 3
1.2.2 使用混合范式 5
1.2.3 對(duì)象的創(chuàng)建過程 6
1.2.4 烏龜塔 7
1.3 函數(shù)式編程經(jīng)典示例 7
1.4 EDA 10
1.5 小結(jié) 10
第 2章 函數(shù)式編程的特點(diǎn) 11
2.1 頭等函數(shù) 11
2.1.1 純函數(shù) 12
2.1.2 高階函數(shù) 13
2.2 不可變數(shù)據(jù)結(jié)構(gòu) 13
2.3 嚴(yán)格求值與非嚴(yán)格求值 14
2.4 用遞歸代替循環(huán)語句 16
2.5 函數(shù)類型系統(tǒng) 19
2.6 回到最初 19
2.7 幾個(gè)高級(jí)概念 20
2.8 小結(jié) 20
第3章 函數(shù)、迭代器和生成器 22
3.1 編寫純函數(shù) 23
3.2 函數(shù)作為頭等對(duì)象 24
3.3 使用字符串 25
3.4 使用元組和命名元組 26
3.4.1 使用生成器表達(dá)式 27
3.4.2 生成器的局限 30
3.4.3 組合生成器表達(dá)式 31
3.5 使用生成器函數(shù)清洗原始數(shù)據(jù) 31
3.6 使用列表、字典和set 33
3.6.1 使用狀態(tài)映射 36
3.6.2 使用bisect模塊創(chuàng)建映射 37
3.6.3 使用有狀態(tài)的set 38
3.7 小結(jié) 39
第4章 使用集合 40
4.1 函數(shù)分類概覽 40
4.2 使用可迭代對(duì)象 41
4.2.1 解析XML文件 42
4.2.2 使用高級(jí)方法解析文件 43
4.2.3 組對(duì)序列元素 45
4.2.4 顯式使用iter()函數(shù) 47
4.2.5 擴(kuò)展簡單循環(huán) 48
4.2.6 將生成器表達(dá)式應(yīng)用于標(biāo)量函數(shù) 51
4.2.7 用any()函數(shù)和all()函數(shù)進(jìn)行歸約 52
4.2.8 使用len()和sum() 54
4.2.9 使用匯總和計(jì)數(shù)進(jìn)行統(tǒng)計(jì)分析 54
4.3 使用zip()函數(shù)實(shí)現(xiàn)結(jié)構(gòu)化和平鋪序列 56
4.3.1 將壓縮序列解壓 58
4.3.2 平鋪序列 58
4.3.3 結(jié)構(gòu)化一維序列 59
4.3.4 結(jié)構(gòu)化一維序列的另一種方式 61
4.4 使用reversed()函數(shù)改變順序 62
4.5 使用enumerate()函數(shù)包含下標(biāo)值 63
4.6 小結(jié) 63
第5章 高階函數(shù) 64
5.1 用max()函數(shù)和min()函數(shù)尋找極值 65
5.2 使用Python匿名函數(shù) 67
5.3 lambda與lambda算子 69
5.4 使用map()將函數(shù)應(yīng)用于集合 69
5.5 使用map()函數(shù)處理多個(gè)序列 70
5.6 使用filter()函數(shù)接收或舍棄數(shù)據(jù) 72
5.7 使用filter()函數(shù)檢測異常值 73
5.8 在iter()函數(shù)中使用哨兵值 74
5.9 使用sorted()函數(shù)將數(shù)據(jù)排序 75
5.10 編寫高階函數(shù) 75
5.11 編寫高階映射和過濾函數(shù) 76
5.11.1 拆包并映射數(shù)據(jù) 77
5.11.2 打包多項(xiàng)數(shù)據(jù)并映射 79
5.11.3 平鋪數(shù)據(jù)并映射 80
5.11.4 過濾并結(jié)構(gòu)化數(shù)據(jù) 81
5.12 編寫生成器函數(shù) 83
5.13 使用可調(diào)用對(duì)象構(gòu)建高階函數(shù) 84
5.14 設(shè)計(jì)模式回顧 87
5.15 小結(jié) 88
第6章 遞歸與歸約 89
6.1 簡單數(shù)值遞歸 89
6.1.1 實(shí)現(xiàn)尾調(diào)用優(yōu)化 90
6.1.2 保持遞歸形式 91
6.1.3 處理復(fù)雜的尾調(diào)用優(yōu)化 92
6.1.4 使用遞歸處理集合 93
6.1.5 集合的尾調(diào)用優(yōu)化 94
6.1.6 集合的歸約與折疊:從多個(gè)到一個(gè) 95
6.2 group-by歸約:從多到少 96
6.2.1 用Counter做映射 97
6.2.2 用排序構(gòu)建映射 98
6.2.3 使用鍵值分組或者分區(qū)數(shù)據(jù) 99
6.2.4 編寫更通用的group-by歸約 102
6.2.5 編寫高階歸約 103
6.2.6 編寫文件解析器 104
6.3 小結(jié) 109
第7章 元組處理技術(shù) 110
7.1 使用元組收集數(shù)據(jù) 110
7.2 使用命名元組收集數(shù)據(jù) 112
7.3 使用函數(shù)構(gòu)造器創(chuàng)建命名元組 115
7.4 使用多種元組結(jié)構(gòu)代替狀態(tài)類 115
7.4.1 賦等級(jí)值 118
7.4.2 用包裝代替狀態(tài)變化 120
7.4.3 以多次包裝代替狀態(tài)變化 121
7.4.4 計(jì)算斯皮爾曼等級(jí)順序相關(guān)度 122
7.5 多態(tài)與類型匹配 123
7.6 小結(jié) 128
第8章 itertools模塊 129
8.1 使用無限迭代器 130
8.1.1 用count()計(jì)數(shù) 130
8.1.2 使用實(shí)數(shù)參數(shù)計(jì)數(shù) 131
8.1.3 用cycle()循環(huán)迭代 132
8.1.4 用repeat()重復(fù)單個(gè)值 134
8.2 使用有限迭代器 135
8.2.1 用enumerate()添加序號(hào) 135
8.2.2 用accumulate()計(jì)算匯總值 137
8.2.3 用chain()組合多個(gè)迭代器 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()過濾狀態(tài) 142
8.2.9 基于filterfalse()和filter()的兩種過濾方法 143
8.2.10 將starmap()和map()應(yīng)用于數(shù)據(jù) 144
8.3 使用tee()函數(shù)克隆迭代器 145
8.4 itertools模塊代碼范例 146
8.5 小結(jié) 147
第9章 高級(jí)itertools技術(shù) 148
9.1 笛卡兒積 148
9.2 對(duì)積進(jìn)行歸約 149
9.2.1 計(jì)算距離 150
9.2.2 獲得所有像素和顏色 152
9.2.3 性能分析 153
9.2.4 重構(gòu)問題 154
9.2.5 合并兩種變換 155
9.3 排列集合元素 156
9.4 生成所有組合 157
9.5 代碼范例 159
9.6 小結(jié) 160
第 10章 functools模塊 161
10.1 函數(shù)工具 161
10.2 使用lru_cache保存已有計(jì)算結(jié)果 162
10.3 使用total_ordering定義類 163
10.4 使用partial()函數(shù)應(yīng)用部分參數(shù) 166
10.5 使用reduce()函數(shù)歸約數(shù)據(jù)集 167
10.5.1 合并map()和reduce() 168
10.5.2 使用reduce()函數(shù)和partial()函數(shù) 170
10.5.3 使用map()函數(shù)和reduce()函數(shù)清洗數(shù)據(jù) 170
10.5.4 使用groupby()函數(shù)和reduce()函數(shù) 171
10.6 小結(jié) 173
第 11章 裝飾器設(shè)計(jì)技術(shù) 174
11.1 作為高階函數(shù)的裝飾器 174
11.2 橫切關(guān)注點(diǎn) 178
11.3 復(fù)合設(shè)計(jì) 178
11.4 向裝飾器添加參數(shù) 181
11.5 實(shí)現(xiàn)更復(fù)雜的裝飾器 183
11.6 復(fù)雜設(shè)計(jì)注意事項(xiàng) 184
11.7 小結(jié) 187
第 12章 multiprocessing和threading模塊 188
12.1 函數(shù)式編程和并發(fā) 188
12.2 并發(fā)的意義 189
12.2.1 邊界條件 189
12.2.2 進(jìn)程或線程間共享資源 190
12.2.3 從何處受益 191
12.3 使用多進(jìn)程池和任務(wù) 191
12.3.1 處理大量大型文件 192
12.3.2 解析日志文件之收集行數(shù)據(jù) 193
12.3.3 解析日志行為命名元組 194
12.3.4 解析Access對(duì)象的其他字段 196
12.3.5 過濾訪問細(xì)節(jié) 199
12.3.6 分析訪問細(xì)節(jié) 200
12.3.7 完整的分析過程 201
12.4 使用多進(jìn)程池進(jìn)行并發(fā)處理 202
12.4.1 使用apply()發(fā)送單個(gè)請(qǐng)求 204
12.4.2 使用map_async()、starmap_async()和starmap_async()等函數(shù) 204
12.4.3 更復(fù)雜的多進(jìn)程架構(gòu) 205
12.4.4 使用concurrent.futures模塊 205
12.4.5 使用concurrent.futures線程池 206
12.4.6 使用threading模塊和queue模塊 206
12.4.7 設(shè)計(jì)并發(fā)處理 207
12.5 小結(jié) 208
第 13章 條件表達(dá)式和operator模塊 209
13.1 條件表達(dá)式求值 210
13.1.1 使用非嚴(yán)格字典規(guī)則 211
13.1.2 過濾True條件表達(dá)式 212
13.1.3 尋找匹配模式 213
13.2 使用operator模塊代替匿名函數(shù) 214
13.3 運(yùn)算符的星號(hào)映射 215
13.4 使用operator模塊函數(shù)進(jìn)行歸約 217
13.5 小結(jié) 218
第 14章 PyMonad庫 219
14.1 下載和安裝 219
14.2 函數(shù)式復(fù)合和柯里化 220
14.2.1 使用柯里化的高階函數(shù) 221
14.2.2 避易就難的柯里化 223
14.3 函數(shù)式復(fù)合和PyMonad*運(yùn)算符 223
14.4 函子和應(yīng)用型函子 224
14.5 單子的bind()函數(shù)和>>運(yùn)算符 228
14.6 模擬實(shí)現(xiàn)單子 229
14.7 單子的其他特性 232
14.8 小結(jié) 233
第 15章 Web服務(wù)的函數(shù)式設(shè)計(jì)方法 234
15.1 HTTP“請(qǐng)求 響應(yīng)”模型 234
15.1.1 通過cookie注入狀態(tài) 236
15.1.2 函數(shù)式設(shè)計(jì)的服務(wù)器考量 236
15.1.3 深入研究函數(shù)式視圖 237
15.1.4 嵌套服務(wù) 237
15.2 WSGI標(biāo)準(zhǔn) 238
15.2.1 在WSGI處理期間拋出異?!?40
15.2.2 實(shí)用的WSGI應(yīng)用程序 242
15.3 將Web服務(wù)定義為函數(shù) 242
15.3.1 創(chuàng)建WSGI應(yīng)用程序 243
15.3.2 獲取原始數(shù)據(jù) 245
15.3.3 運(yùn)用過濾器 246
15.3.4 序列化結(jié)果 247
15.3.5 序列化數(shù)據(jù)為JSON或CSV格式 248
15.3.6 序列化數(shù)據(jù)為XML格式 249
15.3.7 序列化數(shù)據(jù)為HTML 250
15.4 跟蹤使用情況 251
15.5 小結(jié) 252
第 16章 優(yōu)化與改進(jìn) 254
16.1 記憶化和緩存 254
16.2 指定記憶化 256
16.3 尾遞歸優(yōu)化 257
16.4 優(yōu)化存儲(chǔ) 258
16.5 優(yōu)化精度 259
16.6 案例研究:卡方?jīng)Q策 259
16.6.1 使用Counter對(duì)象過濾和約分原始數(shù)據(jù) 260
16.6.2 讀取匯總信息 262
16.6.3 Counter對(duì)象的求和計(jì)算 263
16.6.4 Counter對(duì)象的概率計(jì)算 264
16.7 計(jì)算期望值并顯示列聯(lián)表 265
16.7.1 計(jì)算卡方值 267
16.7.2 計(jì)算卡方閾值 267
16.7.3 計(jì)算不完全伽馬函數(shù) 268
16.7.4 計(jì)算完全伽馬函數(shù) 270
16.7.5 計(jì)算隨機(jī)分布的概率 271
16.8 函數(shù)式編程設(shè)計(jì)模式 273
16.9 小結(jié) 274
版權(quán)聲明
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)