本書是一本全面介紹Python編程,并針對多個應(yīng)用場景給出解決方案的編程手冊。從Python的基礎(chǔ)知識開始,介紹了數(shù)據(jù)類型、函數(shù)、條件、循環(huán)等基本概念,展示了生成器、面向?qū)ο缶幊痰染哂蠵ython特色的進階理念,并給出了定位和排除異常、測試代碼、調(diào)試的方法。隨后,本書針對GUI、數(shù)據(jù)科學(xué)等實用場景,使用Python解決實際問題。最后,本書給出了發(fā)布Python程序的方法。 本書適合想要學(xué)習(xí)編程或有一定編程基礎(chǔ)、想要學(xué)習(xí)Python的人閱讀。
1.完整豐富的Python編程教程,不僅介紹編程語言本身,還涉及場景實戰(zhàn)、錯誤排查、程序發(fā)布等眾多實用內(nèi)容。
2.程序員實用的編程手冊。針對多個應(yīng)用場景給出解決方案,幫助讀者有效避免犯錯,提高工作效率。
3.內(nèi)容循序漸進,深入淺出。從Python的基礎(chǔ)知識開始,介紹了數(shù)據(jù)類型、函數(shù)、條件、循環(huán)等基本概念,展示了生成器、面向?qū)ο缶幊痰染哂蠵ython特色的進階理念,并給出了定位和排除異常、測試代碼、調(diào)試的方法。
4.提供配套代碼,易學(xué)易用。
Fabrizio Romano于1975年出生于意大利。他獲得了帕多瓦大學(xué)計算機科學(xué)工程的碩士學(xué)位。他從1999年開始就成為一名專業(yè)的軟件開發(fā)人員。Fabrizio自2016年起成為Sohonet的產(chǎn)品小組的成員。 Heinrich Kruger于1981年出生于南非。他獲得了荷蘭烏德勒支大學(xué)的計算機科學(xué)碩士學(xué)位。他從2014年開始成為一名專業(yè)的軟件開發(fā)人員,并從2017年開始加入Sohonet的產(chǎn)品小組,成為Fabrizio的同事。
第 1章 Python概述 1
1.1 編程預(yù)備知識 2
1.2 走近Python 3
1.3 關(guān)于Python 4
可移植性 4
一致性 4
開發(fā)人員的效率 4
廣泛的程序庫 5
軟件質(zhì)量 5
軟件集成 5
滿足感和樂趣 5
1.4 Python有什么缺點嗎? 5
1.5 當前的Python用戶 6
1.6 安裝環(huán)境 6
1.6.1 Python 2和Python 3 6
1.7 安裝Python 7
1.7.1 安裝Python解釋器 7
1.7.2 關(guān)于虛擬環(huán)境 9
1.7.3 第 一個虛擬環(huán)境 10
1.7.4 安裝第三方程序庫 12
1.7.5 控制臺是我們的好幫手 13
1.8 怎樣運行Python程序 13
1.8.1 運行Python腳本 13
1.8.2 在交互式shell中運行Python 14
1.8.3 以服務(wù)的形式運行Python 15
1.8.4 以GUI應(yīng)用程序的形式運行Python 15
1.9 Python代碼的組織形式 16
1.9.1 使用模塊和程序包 17
1.10 Python的執(zhí)行模型 18
1.10.1 名稱和名字空間 19
1.10.2 作用域 20
1.10.3 對象和類 23
1.11 編寫優(yōu)質(zhì)代碼的指導(dǎo)原則 25
1.12 Python的文化 26
1.13 關(guān)于IDE的說明 27
1.14 總結(jié) 28
第 2章 內(nèi)置的數(shù)據(jù)類型 29
2.1 一切皆是對象 29
2.2 可變還是不可變?這個是
問題 30
2.3 數(shù)值 32
2.3.1 整數(shù) 32
2.3.2 布爾值 34
2.3.3 實數(shù) 35
2.3.4 復(fù)數(shù) 36
2.3.5 分數(shù)和小數(shù) 36
2.4 不可變序列 37
2.4.1 字符串和bytes(字節(jié)) 37
2.4.2 元組 41
2.5 可變序列 42
2.5.1 列表 42
2.5.2 bytearray(字節(jié)數(shù)組) 45
2.6 集合類型 46
2.7 映射類型字典 48
2.8 數(shù)據(jù)類型 51
2.8.1 日期和時間 52
2.8.2 collections模塊 56
2.9 枚舉 60
2.10 最后的考慮 60
2.10.1 小值緩存 61
2.10.2 如何選擇數(shù)據(jù)結(jié)構(gòu) 61
2.10.3 關(guān)于索引和截取 62
2.10.4 關(guān)于名稱 63
2.11 總結(jié) 64
第3章 迭代和決策 65
3.1 條件編程 65
3.1.1 一種特殊的else:elif 66
3.1.2 三元操作符 68
3.2 循環(huán) 69
3.2.1 for循環(huán) 69
3.2.2 迭代器和可迭代對象 71
3.2.3 對多個序列進行迭代 72
3.2.4 while循環(huán) 74
3.2.5 break和continue語句 76
3.2.6 一種特殊的else子句 77
3.3 賦值表達式 79
3.3.1 語句和表達式 79
3.3.2 使用海象操作符 80
3.3.3 告誡 81
3.4 綜合應(yīng)用 81
3.4.1 質(zhì)數(shù)生成器 81
3.4.2 應(yīng)用折扣 83
3.5 itertools模塊速覽 86
3.5.1 無限迭代器 86
3.5.2 終止于最短輸入序列的
迭代器 86
3.5.3 組合迭代器 87
3.6 總結(jié) 88
第4章 函數(shù),代碼的基本構(gòu)件 89
4.1 為什么要使用函數(shù)? 90
4.1.1 減少代碼的重復(fù) 90
4.1.2 分割復(fù)雜任務(wù) 91
4.1.3 隱藏實現(xiàn)細節(jié) 91
4.1.4 提高可讀性 92
4.1.5 提高可追蹤性 92
4.2 作用域和名稱解析 93
4.2.1 global和nonlocal語句 95
4.3 輸入?yún)?shù) 96
4.3.1 實際參數(shù)的傳遞 97
4.3.2 形式參數(shù)名稱的賦值 97
4.3.3 修改可變對象 98
4.3.4 傳遞實際參數(shù) 99
4.3.5 定義形式參數(shù) 101
4.4 返回值 109
4.4.1 返回多個值 110
4.5 一些實用的提示 111
4.6 遞歸函數(shù) 112
4.7 匿名函數(shù) 113
4.8 函數(shù)的屬性 114
4.9 內(nèi)置函數(shù) 115
4.10 代碼的文檔和注釋 115
4.11 導(dǎo)入對象 116
4.11.1 相對導(dǎo)入 117
4.12 最后一個例子 118
4.13 總結(jié) 119
第5章 解析和生成器 120
5.1 map、zip、filter函數(shù) 121
5.1.1 map 121
5.1.2 zip 124
5.1.3 filter 125
5.2 解析 125
5.2.1 嵌套的解析 126
5.2.2 對解析進行過濾 127
5.2.3 字典解析 129
5.2.4 集合解析 130
5.3 生成器 130
5.3.1 生成器函數(shù) 130
5.3.2 next的幕后 133
5.3.3 yield from表達式 135
5.3.4 生成器表達式 136
5.4 性能上的考慮 138
5.5 不要過度使用解析和生成器 141
5.6 名稱局部化 143
5.7 內(nèi)置的生成行為 144
5.8 最后一個例子 145
5.9 總結(jié) 146
第6章 面向?qū)ο缶幊、裝飾器和
迭代器 148
6.1 裝飾器 148
6.1.1 裝飾器工廠 153
6.2 面向?qū)ο缶幊蹋∣OP) 155
6.2.1 最簡單的Python類 155
6.2.2 類和對象的名字空間 156
6.2.3 屬性屏蔽 157
6.2.4 使用self變量 158
6.2.5 實例的初始化 159
6.2.6 OOP與代碼復(fù)用有關(guān) 159
6.2.7 訪問基類 164
6.2.8 多重繼承 165
6.2.9 類方法和靜態(tài)方法 169
6.2.10 私有方法和名稱改寫 173
6.2.11 property裝飾器 175
6.2.12 cached_property裝飾器 176
6.2.13 操作符重載 178
6.2.14 多態(tài)簡單說明 178
6.2.15 數(shù)據(jù)類 179
6.3 編寫自定義的迭代器 180
6.4 總結(jié) 181
第7章 異常和上下文管理器 182
7.1 異常 182
7.1.1 觸發(fā)異常 184
7.1.2 自定義異常類 184
7.1.3 回溯 184
7.1.4 處理異常 185
7.1.5 不僅僅用于錯誤 188
7.2 上下文管理器 189
7.2.1 基于類的上下文管理器 191
7.2.2 基于生成器的上下文
管理器 192
7.3 總結(jié) 194
第8章 文件和數(shù)據(jù)持久化 195
8.1 操作文件和目錄 195
8.1.1 打開文件 196
8.1.2 讀取和寫入文件 197
8.1.3 檢查文件和目錄是否存在 199
8.1.4 對文件和目錄進行操作 200
8.1.5 臨時文件和臨時目錄 202
8.1.6 目錄的內(nèi)容 203
8.1.7 文件和目錄的壓縮 204
8.2 數(shù)據(jù)交換格式 204
8.2.1 使用JSON 205
8.3 I/O、流和請求 211
8.3.2 創(chuàng)建HTTP請求 212
8.4 對磁盤上的數(shù)據(jù)進行持久化 214
8.4.1 使用pickle對數(shù)據(jù)進行
序列化 214
8.4.2 使用shelve保存數(shù)據(jù) 216
8.4.3 把數(shù)據(jù)保存到數(shù)據(jù)庫 217
8.5 總結(jié) 222
第9章 加密與令牌 223
9.1 加密的需要 223
9.1.1 加密的實用指導(dǎo)原則 224
9.2 Hashlib模塊 224
9.3 HMAC模塊 226
9.4 secrets模塊 227
9.4.1 隨機數(shù) 227
9.4.2 令牌的生成 228
9.4.3 摘要的比較 229
9.5 JSON Web令牌 230
9.5.1 已注冊的訴求 232
9.5.2 使用非對稱(公鑰)算法 235
9.6 參考閱讀 235
9.7 總結(jié) 236
第 10章 測試 237
10.1 對應(yīng)用程序進行測試 237
10.1.1 測試結(jié)構(gòu)詳解 239
10.1.2 測試的指導(dǎo)原則 240
10.1.3 單元測試 241
10.1.4 測試一個CSV生成器 243
10.2 測試驅(qū)動的開發(fā) 255
10.3 總結(jié) 257
第 11章 調(diào)試和性能分析 258
11.1 調(diào)試技巧 259
11.1.1 用print進行調(diào)試 259
11.1.2 用自定義函數(shù)進行調(diào)試 259
11.1.3 使用Python調(diào)試器 261
11.1.4 檢查日志 263
11.1.5 其他方法 266
11.2 故障排除指南 267
11.2.1 在哪里檢查 267
11.2.2 使用測試進行調(diào)試 268
11.2.4 監(jiān)視 268
11.3 對Python進行性能分析 268
11.3.1 什么時候進行性能分析? 271
11.3.2 測量執(zhí)行時間 271
11.4 總結(jié) 272
第 12章 GUI和腳本 273
12.1 第 一種方法:腳本 275
12.1.1 導(dǎo)入部分 275
12.1.2 解析參數(shù) 276
12.1.3 業(yè)務(wù)邏輯 278
12.2 第二種方法:GUI應(yīng)用
程序 281
12.2.1 導(dǎo)入部分 282
12.2.2 布局邏輯 283
12.2.3 業(yè)務(wù)邏輯 286
12.2.4 如何改進這個應(yīng)用程序? 291
12.3 下一步的方向 292
12.3.1 turtle模塊 292
12.3.2 wxPython、PyQt和
PyGTK 292
12.3.3 最小驚訝原則 293
12.3.4 線程方面的考慮 293
12.4 總結(jié) 293
第 13章 數(shù)據(jù)科學(xué)簡介 295
13.1 IPython和Jupyter Notebook 296
13.1.1 使用Anaconda 297
13.1.2 啟動Notebook 298
13.2 處理數(shù)據(jù) 298
13.2.1 設(shè)置Notebook 299
13.2.2 準備數(shù)據(jù) 299
12.2.3 清理數(shù)據(jù) 303
13.2.4 創(chuàng)建DataFrame 304
13.2.5 把DataFrame保存到文件 311
13.2.6 顯示結(jié)果 311
13.3 下一步的方向 316
13.4 總結(jié) 317
第 14章 API開發(fā) 318
14.1 什么是Web? 318
14.1.1 Web的工作方式 319
14.1.2 響應(yīng)狀態(tài)碼 320
14.2 類型提示:概述 320
14.2.1 類型提示的優(yōu)點 321
14.2.2 類型提示的精華 322
14.3 API簡介 324
14.3.1 什么是API 324
14.3.2 API的用途 324
14.3.3 API協(xié)議 325
14.3.4 API數(shù)據(jù)交換格式 325
14.4 鐵路API 326
14.4.1 對數(shù)據(jù)庫進行建模 327
14.4.2 主要的設(shè)置和配置 332
14.4.3 車站端點 333
14.4.4 用戶認證 345
14.4.5 創(chuàng)建API文檔 347
14.5 消費API 348
14.6 未來的方向 353
14.7 總結(jié) 354
第 15章 打包Python應(yīng)用程序 355
15.1 Python包索引 355
15.2 列車調(diào)度項目 357
15.3 用setuptools進行打包 361
15.3.1 必要的文件 361
15.3.2 程序包的元數(shù)據(jù) 364
15.3.3 定義程序包的內(nèi)容 369
15.3.4 指定依賴關(guān)系 371
15.3.5 入口 373
15.4 生成和發(fā)布程序包 374
15.4.1 生成 374
15.4.2 發(fā)布 375
15.5 啟動新項目的建議 377
15.6 其他工具 377
15.7 進一步的學(xué)習(xí)方向 378
15.8 總結(jié) 378