-
>
決戰(zhàn)行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調(diào)優(yōu)實踐之路
-
>
第一行代碼Android
-
>
深度學習
-
>
Unreal Engine 4藍圖完全學習教程
-
>
深入理解計算機系統(tǒng)-原書第3版
-
>
Word/Excel PPT 2013辦公應用從入門到精通-(附贈1DVD.含語音視頻教學+辦公模板+PDF電子書)
流暢的Python 版權(quán)信息
- ISBN:9787115454157
- 條形碼:9787115454157 ; 978-7-115-45415-7
- 裝幀:暫無
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>>
流暢的Python 本書特色
流暢的Python 致力于幫助Python開發(fā)人員挖掘這門語言及相關(guān)程序庫的優(yōu)質(zhì)特性,避免重復勞動,同時寫出簡潔、流暢、易讀、易維護,并且具有地道Python風格的代碼。流暢的Python 尤其深入探討了Python語言的高級用法,涵蓋數(shù)據(jù)結(jié)構(gòu)、Python風格的對象、并行與并發(fā),以及元編程等不同的方面。
流暢的Python 內(nèi)容簡介
流暢的Python 由奮戰(zhàn)在Python開發(fā)一線近20年的Luciano Ramalho執(zhí)筆,Victor Stinner、Alex Martelli等Python大咖擔綱技術(shù)審稿人,從語言設計層面剖析編程細節(jié),兼顧Python 3和Python 2,告訴你Python中不親自動手實踐就無法理解的語言陷阱成因和解決之道,教你寫出風格地道的Python代碼。 ● Python數(shù)據(jù)模型:理解為什么特殊方法是對象行為一致的關(guān)鍵! ● 數(shù)據(jù)結(jié)構(gòu):充分利用內(nèi)置類型,理解Unicode文本和字節(jié)二象性。 ● 把函數(shù)視作對象:把Python函數(shù)視作一等對象,并了解這一點對流行的設計模式的影響。 ● 面向?qū)ο罅晳T用法:通過構(gòu)建類學習引用、可變性、接口、運算符重載和多重繼承! ● 控制流程:學習使用上下文管理器、生成器、協(xié)程,以及通過concurrent.futures和asyncio包實現(xiàn)的并發(fā)。 ● 元編程:理解特性、描述符、類裝飾器和元類的工作原理。
流暢的Python 目錄
**部分 序幕
第 1 章 Python 數(shù)據(jù)模型 2
1.1 一摞 Python 風格的紙牌 3
1.2 如何使用特殊方法 6
1.2.1 模擬數(shù)值類型 7
1.2.2 字符串表示形式 9
1.2.3 算術(shù)運算符 10
1.2.4 自定義的布爾值 10
1.3 特殊方法一覽 10
1.4 為什么 len 不是普通方法 12
1.5 本章小結(jié) 12
1.6 延伸閱讀 13
第二部分 數(shù)據(jù)結(jié)構(gòu)
第 2 章 序列構(gòu)成的數(shù)組 16
2.1 內(nèi)置序列類型概覽 17
2.2 列表推導和生成器表達式 18
2.2.1 列表推導和可讀性 18
2.2.2 列表推導同 filter 和 map 的比較 20
2.2.3 笛卡兒積 20
2.2.4 生成器表達式 21
2.3 元組不僅僅是不可變的列表 22
2.3.1 元組和記錄 23
2.3.2 元組拆包 23
2.3.3 嵌套元組拆包 25
2.3.4 具名元組 26
2.3.5 作為不可變列表的元組 27
2.4 切片 28
2.4.1 為什么切片和區(qū)間會忽略*后一個元素 28
2.4.2 對對象進行切片 29
2.4.3 多維切片和省略 30
2.4.4 給切片賦值 31
2.5 對序列使用 和 * 31
2.6 序列的增量賦值 33
2.7 list.sort 方法和內(nèi)置函數(shù) sorted 36
2.8 用 bisect 來管理已排序的序列 37
2.8.1 用 bisect 來搜索 38
2.8.2 用 bisect.insort 插入新元素 40
2.9 當列表不是首選時 41
2.9.1 數(shù)組 41
2.9.2 內(nèi)存視圖 44
2.9.3 NumPy 和 SciPy 45
2.9.4 雙向隊列和其他形式的隊列 47
2.10 本章小結(jié) 49
2.11 延伸閱讀 50
第 3 章 字典和集合 54
3.1 泛映射類型 54
3.2 字典推導 56
3.3 常見的映射方法 57
3.4 映射的彈性鍵查詢 61
3.4.1 defaultdict :處理找不到的鍵的一個選擇 61
3.4.2 特殊方法 __missing__ 62
3.5 字典的變種 65
3.6 子類化 UserDict 65
3.7 不可變映射類型 67
3.8 集合論 68
3.8.1 集合字面量 69
3.8.2 集合推導 71
3.8.3 集合的操作 71
3.9 dict 和 set 的背后 73
3.9.1 一個關(guān)于效率的實驗 74
3.9.2 字典中的散列表 75
3.9.3 dict 的實現(xiàn)及其導致的結(jié)果 78
3.9.4 set 的實現(xiàn)以及導致的結(jié)果 80
3.10 本章小結(jié) 80
3.11 延伸閱讀 81
第 4 章 文本和字節(jié)序列 83
4.1 字符問題 84
4.2 字節(jié)概要 85
4.3 基本的編解碼器 88
4.4 了解編解碼問題 89
4.4.1 處理 UnicodeEncodeError 90
4.4.2 處理 UnicodeDecodeError 90
4.4.3 使用預期之外的編碼加載模塊時拋出的 SyntaxError 91
4.4.4 如何找出字節(jié)序列的編碼 92
4.4.5 BOM:有用的鬼符 93
4.5 處理文本文件 94
4.6 為了正確比較而規(guī)范化 Unicode 字符串 99
4.6.1 大小寫折疊 101
4.6.2 規(guī)范化文本匹配實用函數(shù) 102
4.6.3 極端“規(guī)范化”:去掉變音符號 103
4.7 Unicode 文本排序 105
4.8 Unicode 數(shù)據(jù)庫 108
4.9 支持字符串和字節(jié)序列的雙模式 API 109
4.9.1 正則表達式中的字符串和字節(jié)序列 109
4.9.2 os 函數(shù)中的字符串和字節(jié)序列 111
4.10 本章小結(jié) 112
4.11 延伸閱讀 113
第三部分 把函數(shù)視作對象
第 5 章 一等函數(shù) 118
5.1 把函數(shù)視作對象 119
5.2 高階函數(shù) 120
5.3 匿名函數(shù) 122
5.4 可調(diào)用對象 122
5.5 用戶定義的可調(diào)用類型 123
5.6 函數(shù)內(nèi)省 124
5.7 從定位參數(shù)到僅限關(guān)鍵字參數(shù) 126
5.8 獲取關(guān)于參數(shù)的信息 127
5.9 函數(shù)注解 131
5.10 支持函數(shù)式編程的包 132
5.10.1 operator 模塊 132
5.10.2 使用 functools.partial 凍結(jié)參數(shù) 135
5.11 本章小結(jié) 137
5.12 延伸閱讀 137
第 6 章 使用一等函數(shù)實現(xiàn)設計模式 141
6.1 案例分析:重構(gòu)“策略”模式 142
6.1.1 經(jīng)典的“策略”模式 142
6.1.2 使用函數(shù)實現(xiàn)“策略”模式 145
6.1.3 選擇*佳策略:簡單的方式 148
6.1.4 找出模塊中的全部策略 149
6.2 “命令”模式 150
6.3 本章小結(jié) 151
6.4 延伸閱讀 152
第 7 章 函數(shù)裝飾器和閉包 154
7.1 裝飾器基礎(chǔ)知識 155
7.2 Python 何時執(zhí)行裝飾器 156
7.3 使用裝飾器改進“策略”模式 157
7.4 變量作用域規(guī)則 159
7.5 閉包 161
7.6 nonlocal 聲明 164
7.7 實現(xiàn)一個簡單的裝飾器 165
7.8 標準庫中的裝飾器 168
7.8.1 使用 functools.lru_cache 做備忘 168
7.8.2 單分派泛函數(shù) 170
7.9 疊放裝飾器 172
7.10 參數(shù)化裝飾器 173
7.10.1 一個參數(shù)化的注冊裝飾器 173
7.10.2 參數(shù)化 clock 裝飾器 175
7.11 本章小結(jié) 177
7.12 延伸閱讀 178
第四部分 面向?qū)ο髴T用法
第 8 章 對象引用、可變性和垃圾回收 182
8.1 變量不是盒子 183
8.2 標識、相等性和別名 184
8.2.1 在 == 和 is 之間選擇 185
8.2.2 元組的相對不可變性 186
8.3 默認做淺復制 187
8.4 函數(shù)的參數(shù)作為引用時 190
8.4.1 不要使用可變類型作為參數(shù)的默認值 191
8.4.2 防御可變參數(shù) 193
8.5 del 和垃圾回收 195
8.6 弱引用 196
8.6.1 WeakValueDictionary 簡介 197
8.6.2 弱引用的局限 199
8.7 Python 對不可變類型施加的把戲 199
8.8 本章小結(jié) 201
8.9 延伸閱讀 201
第 9 章 符合 Python 風格的對象 205
9.1 對象表示形式 206
9.2 再談向量類 206
9.3 備選構(gòu)造方法 208
9.4 classmethod 與 staticmethod 209
9.5 格式化顯示 210
9.6 可散列的 Vector2d 213
9.7 Python 的私有屬性和“受保護的”屬性 218
9.8 使用 __slots__ 類屬性節(jié)省空間 220
9.9 覆蓋類屬性 222
9.10 本章小結(jié) 224
9.11 延伸閱讀 225
第 10 章 序列的修改、散列和切片 229
10.1 Vector 類:用戶定義的序列類型 230
10.2 Vector 類第 1 版:與 Vector2d 類兼容 230
10.3 協(xié)議和鴨子類型 232
10.4 Vector 類第 2 版:可切片的序列 233
10.4.1 切片原理 234
10.4.2 能處理切片的 __getitem__ 方法 236
10.5 Vector 類第 3 版:動態(tài)存取屬性 237
10.6 Vector 類第 4 版:散列和快速等值測試 240
10.7 Vector 類第 5 版:格式化 244
10.8 本章小結(jié) 251
10.9 延伸閱讀 251
第 11 章 接口:從協(xié)議到抽象基類 256
11.1 Python 文化中的接口和協(xié)議 257
11.2 Python 喜歡序列 258
11.3 使用猴子補丁在運行時實現(xiàn)協(xié)議 260
11.4 Alex Martelli 的水禽 262
11.5 定義抽象基類的子類 266
11.6 標準庫中的抽象基類 267
11.6.1 collections.abc 模塊中的抽象基類 267
11.6.2 抽象基類的數(shù)字塔 269
11.7 定義并使用一個抽象基類 270
11.7.1 抽象基類句法詳解 273
11.7.2 定義 Tombola 抽象基類的子類 274
11.7.3 Tombola 的虛擬子類 276
11.8 Tombola 子類的測試方法 278
11.9 Python 使用 register 的方式 281
11.10 鵝的行為有可能像鴨子 281
11.11 本章小結(jié) 283
11.12 延伸閱讀 284
第 12 章 繼承的優(yōu)缺點 289
12.1 子類化內(nèi)置類型很麻煩 289
12.2 多重繼承和方法解析順序 292
12.3 多重繼承的真實應用 296
12.4 處理多重繼承 298
12.5 一個現(xiàn)代示例:Django 通用視圖中的混入 301
12.6 本章小結(jié) 304
12.7 延伸閱讀 304
第 13 章 正確重載運算符 307
13.1 運算符重載基礎(chǔ) 308
13.2 一元運算符 308
13.3 重載向量加法運算符 310
13.4 重載標量乘法運算符 * 315
13.5 眾多比較運算符 318
13.6 增量賦值運算符 321
13.7 本章小結(jié) 325
13.8 延伸閱讀 326
第五部分 控制流程
第 14 章 可迭代的對象、迭代器和生成器 330
14.1 Sentence 類第 1 版:單詞序列 331
14.2 可迭代的對象與迭代器的對比 334
14.3 Sentence 類第 2 版:典型的迭代器 337
14.4 Sentence 類第 3 版:生成器函數(shù) 339
14.5 Sentence 類第 4 版:惰性實現(xiàn) 343
14.6 Sentence 類第 5 版:生成器表達式 344
14.7 何時使用生成器表達式 345
14.8 另一個示例:等差數(shù)列生成器 346
14.9 標準庫中的生成器函數(shù) 349
14.10 Python 3.3 中新出現(xiàn)的句法: yield from 357
14.11 可迭代的歸約函數(shù) 358
14.12 深入分析 iter 函數(shù) 359
14.13 案例分析:在數(shù)據(jù)庫轉(zhuǎn)換工具中使用生成器 360
14.14 把生成器當成協(xié)程 362
14.15 本章小結(jié) 362
14.16 延伸閱讀 363
第 15 章 上下文管理器和 else 塊 368
15.1 先做這個,再做那個: if 語句之外的 else 塊 369
15.2 上下文管理器和 with 塊 370
15.3 contextlib 模塊中的實用工具 374
15.4 使用 @contextmanager 375
15.5 本章小結(jié) 378
15.6 延伸閱讀 378
第 16 章 協(xié)程 381
16.1 生成器如何進化成協(xié)程 382
16.2 用作協(xié)程的生成器的基本行為 382
16.3 示例:使用協(xié)程計算移動平均值 385
16.4 預激協(xié)程的裝飾器 386
16.5 終止協(xié)程和異常處理 388
16.6 讓協(xié)程返回值 391
16.7 使用 yield from 393
16.8 yield from 的意義 398
16.9 使用案例:使用協(xié)程做離散事件仿真 403
16.9.1 離散事件仿真簡介 403
16.9.2 出租車隊運營仿真 404
16.10 本章小結(jié) 410
16.11 延伸閱讀 411
第 17 章 使用期物處理并發(fā) 416
17.1 示例:網(wǎng)絡下載的三種風格 416
17.1.1 依序下載的腳本 418
17.1.2 使用 concurrent.futures 模塊下載 420
17.1.3 期物在哪里 421
17.2 阻塞型 I O 和 GIL 424
17.3 使用 concurrent.futures 模塊啟動進程 424
17.4 實驗 Executor.map 方法 426
17.5 顯示下載進度并處理錯誤 429
17.5.1 flags2 系列示例處理錯誤的方式 433
17.5.2 使用 futures.as_completed 函數(shù) 435
17.5.3 線程和多進程的替代方案 437
17.6 本章小結(jié) 437
17.7 延伸閱讀 438
第 18 章 使用 asyncio 包處理并發(fā) 442
18.1 線程與協(xié)程對比 443
18.1.1 asyncio.Future :故意不阻塞 448
18.1.2 從期物、任務和協(xié)程中產(chǎn)出 449
18.2 使用 asyncio 和 aiohttp 包下載 450
18.3 避免阻塞型調(diào)用 454
18.4 改進 asyncio 下載腳本 456
18.4.1 使用 asyncio.as_completed 函數(shù) 456
18.4.2 使用 Executor 對象,防止阻塞事件循環(huán) 461
18.5 從回調(diào)到期物和協(xié)程 462
18.6 使用 asyncio 包編寫服務器 466
18.6.1 使用 asyncio 包編寫 TCP 服務器 467
18.6.2 使用 aiohttp 包編寫 Web 服務器 471
18.6.3 更好地支持并發(fā)的智能客戶端 474
18.7 本章小結(jié) 475
18.8 延伸閱讀 476
第六部分 元編程
第 19 章 動態(tài)屬性和特性 482
19.1 使用動態(tài)屬性轉(zhuǎn)換數(shù)據(jù) 483
19.1.1 使用動態(tài)屬性訪問 JSON 類數(shù)據(jù) 485
19.1.2 處理無效屬性名 487
19.1.3 使用 __new__ 方法以靈活的方式創(chuàng)建對象 488
19.1.4 使用 shelve 模塊調(diào)整 OSCON 數(shù)據(jù)源的結(jié)構(gòu) 490
19.1.5 使用特性獲取鏈接的記錄 493
19.2 使用特性驗證屬性 498
19.2.1 LineItem 類第 1 版:表示訂單中商品的類 498
19.2.2 LineItem 類第 2 版:能驗證值的特性 499
19.3 特性全解析 500
19.3.1 特性會覆蓋實例屬性 501
19.3.2 特性的文檔 503
19.4 定義一個特性工廠函數(shù) 504
19.5 處理屬性刪除操作 506
19.6 處理屬性的重要屬性和函數(shù) 507
19.6.1 影響屬性處理方式的特殊屬性 507
19.6.2 處理屬性的內(nèi)置函數(shù) 508
19.6.3 處理屬性的特殊方法 509
19.7 本章小結(jié) 510
19.8 延伸閱讀 510
第 20 章 屬性描述符 514
20.1 描述符示例:驗證屬性 514
20.1.1 LineItem 類第 3 版:一個簡單的描述符 515
20.1.2 LineItem 類第 4 版:自動獲取儲存屬性的名稱 519
20.1.3 LineItem 類第 5 版:一種新型描述符 524
20.2 覆蓋型與非覆蓋型描述符對比 526
20.2.1 覆蓋型描述符 528
20.2.2 沒有 __get__ 方法的覆蓋型描述符 529
20.2.3 非覆蓋型描述符 530
20.2.4 在類中覆蓋描述符 531
20.3 方法是描述符 531
20.4 描述符用法建議 533
20.5 描述符的文檔字符串和覆蓋刪除操作 534
20.6 本章小結(jié) 535
20.7 延伸閱讀 536
第 21 章 類元編程 538
21.1 類工廠函數(shù) 539
21.2 定制描述符的類裝飾器 541
21.3 導入時和運行時比較 543
21.4 元類基礎(chǔ)知識 547
21.5 定制描述符的元類 552
21.6 元類的特殊方法 __prepare__ 554
21.7 類作為對象 556
21.8 本章小結(jié) 557
21.9 延伸閱讀 557
結(jié)語 560
附錄 A 輔助腳本 563
Python 術(shù)語表 588
作者簡介 600
關(guān)于封面 600
流暢的Python 作者簡介
Luciano Ramalho,從1998年起就成為了Python程序員。他是Python軟件基金會的成員,Python.pro.br(巴西的一家培訓公司)的共同所有者,還是巴西diyi個眾創(chuàng)空間Garoa Hacker Clube的聯(lián)合創(chuàng)始人。他領(lǐng)導過多個軟件開發(fā)團隊,還在巴西的媒體、銀行和政府部門教授Python課程。 【譯者簡介】 安道 專注于現(xiàn)代計算機技術(shù)的自由翻譯,譯有《Flask Web 開發(fā)》《Python 網(wǎng)絡編程攻略》《Ruby on Rails 教程》等書。 個人網(wǎng)站:http: about.ac 。 吳珂 現(xiàn)為Airbnb公司軟件工程師,所在團隊主要負責開發(fā)和維護各類可伸縮、高性能服務,并在Airbnb內(nèi)推廣面向服務的系統(tǒng)架構(gòu)。在分布式系統(tǒng)、云存儲服務和跨平臺SDK開發(fā),以及大規(guī)模數(shù)據(jù)處理等方面有多年經(jīng)驗。
- >
二體千字文
- >
有舍有得是人生
- >
人文閱讀與收藏·良友文學叢書:一天的工作
- >
隨園食單
- >
自卑與超越
- >
我與地壇
- >
史學評論
- >
姑媽的寶刀