Python 語言及其應用, 2/e Introducing Python: Modern Computing in Simple Packages, 2/e
Bill Lubanovic
- 出版商: 人民郵電
- 出版日期: 2022-03-01
- 定價: $779
- 售價: 8.5 折 $662
- 語言: 簡體中文
- 頁數: 488
- ISBN: 7115586225
- ISBN-13: 9787115586223
- 此書翻譯自: Introducing Python: Modern Computing in Simple Packages, 2/e (Paperback)
-
相關翻譯:
精通 Python|運用簡單的套件進行現代運算, 2/e (Introducing Python: Modern Computing in Simple Packages, 2/e) (繁中版)
已絕版
相關主題
商品描述
本書分為上、下兩大部分,共計22章。第一部分(第1~11章)由淺入深地介紹Python的基礎知識,包括變量、數值、條件語句、文本字符串、循環語句、元組、列表、字典、集合、函數、對象、類、模塊、庫,等等。掌握這些基礎知識將為運用Python奠定牢固的基礎。第二部分(第12~22章)介紹Python的應用,所涉及的領域包括Web應用、數據庫、網絡和機器學習。你將學會用Python處理時間、進行網絡通信、完成數據科學任務等,還會瞭解並發的相關知識。
作者簡介
比尔·卢巴诺维奇(Bill Lubanovic)在长达40余年的软件开发生涯中积累了丰富的实战经验,开发过的项目跨越数据库、Web、分布式系统等多个领域。他曾负责用Python重新实现流行工具Wayback Machine。
目錄大綱
前言 xxv
第 一部分 Python基礎
第 1 章 Python初探 3
1.1 謎題 3
1.2 小程序 5
1.3 大程序 7
1.4 現實世界中的Python 10
1.5 Python和其他語言 10
1.6 為什麽選擇Python 12
1.7 為什麽不選擇Python 14
1.8 Python 2和Python 3 14
1.9 安裝Python 15
1.10 運行Python 15
1.10.1 使用交互式解釋器 15
1.10.2 使用Python文件 16
1.10.3 下一步 17
1.11 禪意時刻 17
1.12 後續內容 17
1.13 練習 18
第 2 章 數據:類型、值、變量和名稱 19
2.1 Python數據皆是對象 19
2.2 類型 20
2.3 可變性 21
2.4 字面值 22
2.5 變量 22
2.6 賦值 23
2.7 變量是名稱,不是位置 24
2.8 向多個名稱賦值 27
2.9 為名稱重新賦值 27
2.10 復制 27
2.11 選個好變量名 28
2.12 後續內容 28
2.13 練習 28
第 3 章 數字 29
3.1 布爾值 29
3.2 整數 30
3.2.1 字面整數 30
3.2.2 整數運算符 31
3.2.3 整數和變量 33
3.2.4 優先級 34
3.2.5 基數 35
3.2.6 類型轉換 37
3.2.7 int類型有多大 39
3.3 浮點數 40
3.4 數學函數 41
3.5 後續內容 41
3.6 練習 41
第 4 章 if語句 42
4.1 使用#註釋 42
4.2 使用\續行 43
4.3 使用if、elif和else進行比較 44
4.4 True是什麽 46
4.5 使用in進行多重比較 47
4.6 新秀:我是海象 48
4.7 後續內容 49
4.8 練習 49
第 5 章 字符串 50
5.1 使用引號創建字符串 50
5.2 使用str()創建字符串 52
5.3 使用\轉義 53
5.4 使用+拼接 54
5.5 使用*重復 55
5.6 使用[]獲取字符 55
5.7 使用分片提取子串 56
5.8 使用len()獲取字符串長度 58
5.9 使用split()分割字符串 58
5.10 使用join()合並字符串 59
5.11 使用replace()進行替換 59
5.12 使用strip()進行剝離 59
5.13 搜索和選擇 60
5.14 大小寫 62
5.15 對齊 63
5.16 格式化 63
5.16.1 舊式樣:% 63
5.16.2 新式樣:{}和format() 66
5.16.3 最新式樣:f字符串 67
5.17 未完待續 68
5.18 後續內容 68
5.19 練習 68
第 6 章 while循環和for循環 70
6.1 while循環 70
6.1.1 使用break跳出循環 71
6.1.2 使用continue跳過本次循環 71
6.1.3 使用else檢查break 71
6.2 使用for和in進行迭代 72
6.2.1 使用break跳出循環 73
6.2.2 使用continue跳過本次循環 73
6.2.3 使用else檢查break 73
6.2.4 使用range()生成數字序列 74
6.3 其他迭代器 74
6.4 後續內容 74
6.5 練習 74
第 7 章 元組和列表 76
7.1 元組 76
7.1.1 使用逗號和()創建元組 77
7.1.2 使用tuple()創建元組 78
7.1.3 使用+拼接元組 78
7.1.4 使用*復制元素 78
7.1.5 比較元組 78
7.1.6 使用for和in迭代元組 79
7.1.7 修改元組 79
7.2 列表 80
7.2.1 使用[]創建列表 80
7.2.2 使用list()創建或轉換列表 80
7.2.3 使用split()從字符串創建列表 80
7.2.4 使用[offset]獲取列表項 81
7.2.5 使用切片獲取列表項 82
7.2.6 使用append()在末尾添加列表項 82
7.2.7 使用insert()按偏移插入列表項 83
7.2.8 使用*復制所有列表項 83
7.2.9 使用extend()或+拼接列表 83
7.2.10 使用[offset]修改列表項 84
7.2.11 使用切片修改列表項 84
7.2.12 使用del按偏移刪除列表項 85
7.2.13 使用remove()按值刪除列表項 85
7.2.14 使用pop()按偏移獲取列表項並刪除 85
7.2.15 使用clear()刪除所有列表項 86
7.2.16 使用index()按值查找列表項的偏移 86
7.2.17 使用in測試值 86
7.2.18 使用count()統計某個值出現的次數 87
7.2.19 使用join()將列表轉換為字符串 87
7.2.20 使用sort()或sorted()重新排序列表項 87
7.2.21 使用len()獲得列表長度 88
7.2.22 使用=賦值 88
7.2.23 使用copy()、list()或切片復制列表 89
7.2.24 使用deepcopy()復制所有內容 89
7.2.25 比較列表 90
7.2.26 使用for和in迭代列表 91
7.2.27 使用zip()迭代多個序列 92
7.2.28 使用推導式創建列表 92
7.2.29 列表的列表 95
7.3 元組和列表 95
7.4 不存在元組推導式 95
7.5 後續內容 96
7.6 練習 96
第 8 章 字典和集合 98
8.1 字典 98
8.1.1 使用{}創建字典 98
8.1.2 使用dict()創建字典 99
8.1.3 使用dict()進行轉換 99
8.1.4 使用[key]添加或修改字典項 100
8.1.5 使用[key]或get()獲取字典項 101
8.1.6 使用keys()獲取所有的鍵 102
8.1.7 使用values()獲取所有值 102
8.1.8 使用items()獲取所有“鍵–值”對 102
8.1.9 使用len()獲取長度 103
8.1.10 使用{**a, **b}合並字典 103
8.1.11 使用update()合並字典 103
8.1.12 使用del按鍵刪除字典項 104
8.1.13 使用pop()按鍵獲取字典項並將其刪除 104
8.1.14 使用clear()刪除所有字典項 105
8.1.15 使用in測試鍵是否存在 105
8.1.16 使用=賦值 105
8.1.17 使用copy()復制 105
8.1.18 使用deepcopy()復制所有內容 106
8.1.19 比較字典 107
8.1.20 使用for和in迭代字典 107
8.1.21 字典推導式 108
8.2 集合 109
8.2.1 使用set()創建集合 110
8.2.2 使用set()進行轉換 110
8.2.3 使用len()獲取集合元素個數 111
8.2.4 使用add()添加元素 111
8.2.5 使用remove()刪除元素 111
8.2.6 使用for和in迭代集合 111
8.2.7 使用in測試元素 111
8.2.8 集合運算 112
8.2.9 集合推導式 115
8.2.10 使用frozenset()創建不可變集合 115
8.3 目前為止學過的數據結構 116
8.4 創建更復雜的數據結構 116
8.5 後續內容 117
8.6 練習 117
第 9 章 函數 119
9.1 使用def定義函數 119
9.2 使用圓括號調用函數 120
9.3 實參與形參 120
9.3.1 有用的None 122
9.3.2 位置實參 123
9.3.3 關鍵字實參 123
9.3.4 指定默認形參值 124
9.3.5 使用*拆分/匯集位置實參 125
9.3.6 使用**拆分/匯集關鍵字實參 126
9.3.7 僅關鍵字形參 127
9.3.8 可變實參和不可變實參 128
9.4 文檔字符串 128
9.5 作為“頭等公民”的函數 129
9.6 內部函數 131
9.7 匿名函數:lambda 132
9.8 生成器 133
9.8.1 生成器函數 134
9.8.2 生成器推導式 134
9.9 裝飾器 135
9.10 名稱空間和作用域 137
9.11 名稱中_和__的用法 139
9.12 遞歸 139
9.13 異步函數 140
9.14 異常 140
9.14.1 使用try和except處理錯誤 141
9.14.2 編寫自己的異常 142
9.15 後續內容 143
9.16 練習 143
第 10 章 對象和類 144
10.1 什麽是對象 144
10.2 簡單對象 145
10.2.1 使用class定義類 145
10.2.2 特性 145
10.2.3 方法 146
10.2.4 初始化 147
10.3 繼承 148
10.3.1 從父類繼承 148
10.3.2 覆蓋方法 149
10.3.3 添加方法 150
10.3.4 使用super()獲得父類的幫助 151
10.3.5 多重繼承 152
10.3.6 mixin 153
10.4 為self正名 154
10.5 特性訪問 154
10.5.1 直接訪問 154
10.5.2 getter和setter 155
10.5.3 用於特性訪問的屬性 155
10.5.4 計算值屬性 157
10.5.5 使用名稱重整保護內部隱私 158
10.5.6 類和對象特性 158
10.6 方法的類型 159
10.6.1 實例方法 159
10.6.2 類方法 159
10.6.3 靜態方法 160
10.7 鴨子類型 160
10.8 魔術方法 162
10.9 聚合和組合 165
10.10 何時使用對象或其他東西 166
10.11 具名元組 166
10.12 數據類 168
10.13 attrs 169
10.14 後續內容 169
10.15 練習 169
第 11 章 模塊、包和贈品 170
11.1 模塊和import語句 170
11.1.1 導入模塊 170
11.1.2 使用別名導入模塊 172
11.1.3 導入部分模塊 172
11.2 包 172
11.2.1 模塊搜索路徑 174
11.2.2 相對導入和絕對導入 174
11.2.3 名稱空間包 175
11.2.4 模塊和對象 176
11.3 Python標準庫 176
11.3.1 使用setdefault()和defaultdict()處理缺失的鍵 177
11.3.2 使用Counter()計數 178
11.3.3 使用OrderedDict()按鍵排序 179
11.3.4 棧+隊列=雙端隊列 180
11.3.5 使用itertools迭代代碼結構 181
11.3.6 使用pprint()美化輸出 182
11.3.7 獲得隨機數 182
11.4 獲取其他Python代碼 184
11.5 後續內容 184
11.6 練習 184
第二部分 Python實踐
第 12 章 數據處理 187
12.1 文本字符串:Unicode 188
12.1.1 Python 3 Unicode字符串 188
12.1.2 UTF-8 191
12.1.3 編碼 191
12.1.4 解碼 192
12.1.5 HTML實體 194
12.1.6 歸一化 195
12.1.7 更多信息 196
12.2 字符串:正則表達式 196
12.2.1 使用match()查找起始匹配 197
12.2.2 使用search()查找首次匹配 198
12.2.3 使用findall()查找所有匹配 198
12.2.4 使用split()在匹配處分割 199
12.2.5 使用sub()替換匹配 199
12.2.6 模式:特殊字符 199
12.2.7 模式:使用修飾符 201
12.2.8 模式:指定match()的輸出 203
12.3 二進制數據 203
12.3.1 bytes和bytearray 204
12.3.2 使用struct轉換二進制數據 205
12.3.3 其他二進制數據工具 207
12.3.4 使用binascii()轉換二進制/字符串 208
12.3.5 位運算符 208
12.4 珠寶類比 209
12.5 後續內容 209
12.6 練習 209
第 13 章 日歷和時鐘 211
13.1 閏年 212
13.2 datetime模塊 212
13.3 使用time模塊 215
13.4 讀寫日期和時間 216
13.5 所有的轉換 220
13.6 替代模塊 220
13.7 後續內容 221
13.8 練習 221
第 14 章 文件和目錄 222
14.1 文件輸入和輸出 222
14.1.1 使用open()創建或打開文件 222
14.1.2 使用print()寫入文本文件 223
14.1.3 使用write()寫入文本文件 223
14.1.4 使用read()、readline()或readlines()讀取文本文件 225
14.1.5 使用write()寫入二進制文件 226
14.1.6 使用read()讀取二進制文件 227
14.1.7 使用with自動關閉文件 227
14.1.8 使用seek()改變文件位置 228
14.2 內存映射 229
14.3 文件操作 229
14.3.1 使用exists()檢查文件是否存在 230
14.3.2 使用isfile()檢查文件類型 230
14.3.3 使用copy()復制文件 231
14.3.4 使用rename()重命名 231
14.3.5 使用link()或symlink()創建鏈接 231
14.3.6 使用chmod()改變文件權限 231
14.3.7 使用chown()改變文件所屬權 232
14.3.8 使用remove()刪除文件 232
14.4 目錄操作 232
14.4.1 使用mkdir()創建目錄 232
14.4.2 使用rmdir()刪除目錄 232
14.4.3 使用listdir()列出目錄內容 232
14.4.4 使用chdir()改變當前目錄 233
14.4.5 使用glob()列出匹配文件 233
14.5 路徑名 234
14.5.1 使用abspath()獲取路徑名 235
14.5.2 使用realpath()獲取符號鏈接路徑名 235
14.5.3 使用os.path.join()構建路徑名 235
14.5.4 使用pathlib 235
14.6 BytesIO和StringIO 236
14.7 後續內容 237
14.8 練習 237
第 15 章 進程和並發 238
15.1 程序和進程 238
15.1.1 使用subprocess創建進程 239
15.1.2 使用multiprocessing創建進程 240
15.1.3 使用terminate()終止進程 241
15.1.4 使用os獲得系統信息 241
15.1.5 使用psutil獲取進程信息 242
15.2 命令自動化 242
15.2.1 invoke 243
15.2.2 其他命令助手 243
15.3 並發 244
15.3.1 隊列 245
15.3.2 進程 245
15.3.3 線程 246
15.3.4 concurrent.futures 248
15.3.5 綠色線程和gevent 251
15.3.6 twisted 252
15.3.7 asyncio 254
15.3.8 Redis 254
15.3.9 隊列之外的選擇 257
15.4 後續內容 257
15.5 練習 257
第 16 章 持久性存儲 258
16.1 平面文本文件 258
16.2 填充式文本文件 258
16.3 表格式文本文件 259
16.3.1 CSV 259
16.3.2 XML 261
16.3.3 XML安全提示 263
16.3.4 HTML 263
16.3.5 JSON 264
16.3.6 YAML 266
16.3.7 tablib 267
16.3.8 Pandas 267
16.3.9 配置文件 268
16.4 二進制文件 269
16.4.1 填充式二進制文件和內存映射 269
16.4.2 電子表格 270
16.4.3 HDF5 270
16.4.4 TileDB 270
16.5 關系數據庫 270
16.5.1 SQL 271
16.5.2 DB-API 272
16.5.3 SQLite 273
16.5.4 MySQL 274
16.5.5 PostgreSQL 275
16.5.6 SQLAlchemy 275
16.5.7 其他數據庫訪問包 280
16.6 NoSQL數據存儲 280
16.6.1 dbm家族 280
16.6.2 memcached 281
16.6.3 Redis 282
16.6.4 文檔數據庫 288
16.6.5 時間序列數據庫 289
16.6.6 圖數據庫 289
16.6.7 其他NoSQL 289
16.7 全文數據庫 290
16.8 後續內容 290
16.9 練習 290
第 17 章 網絡 292
17.1 TCP/IP 292
17.1.1 套接字 293
17.1.2 Scapy 297
17.1.3 Netcat 297
17.2 聯網模式 297
17.3 “請求–回應”模式 298
17.3.1 ZeroMQ 298
17.3.2 其他消息工具 301
17.4 “發布–訂閱”模式 302
17.4.1 Redis 302
17.4.2 ZeroMQ 303
17.4.3 其他“發布–訂閱”工具 305
17.5 互聯網服務 305
17.5.1 域名系統 305
17.5.2 Python電子郵件模塊 306
17.5.3 其他協議 306
17.6 Web服務和API 306
17.7 數據序列化 307
17.7.1 使用pickle進行序列化 307
17.7.2 其他序列化格式 308
17.8 遠程過程調用 309
17.8.1 XML-RPC 309
17.8.2 JSON-RPC 310
17.8.3 MessagePack-RPC 311
17.8.4 zerorpc 312
17.8.5 gRPC 312
17.8.6 twirp 313
17.9 遠程管理工具 313
17.10 大數據 313
17.10.1 Hadoop 314
17.10.2 Spark 314
17.10.3 Disco 314
17.10.4 Dask 314
17.11 雲 315
17.11.1 Amazon Web服務 316
17.11.2 Google Cloud 316
17.11.3 Microsoft Azure 316
17.11.4 OpenStack 316
17.12 Docker 316
17.13 後續內容 317
17.14 練習 317
第 18 章 Web 318
18.1 Web客戶端 319
18.1.1 使用telnet進行測試 320
18.1.2 使用curl進行測試 321
18.1.3 使用httpie進行測試 322
18.1.4 使用httpbin進行測試 322
18.1.5 Python的標準Web庫 322
18.1.6 標準庫之外的requests 324
18.2 Web服務器 325
18.2.1 最簡單的Python Web服務器 326
18.2.2 Web服務器網關接口(WSGI) 327
18.2.3 ASGI 327
18.2.4 Apache 328
18.2.5 NGINX 329
18.2.6 其他Python Web服務器 329
18.3 Web服務器框架 330
18.3.1 Bottle 330
18.3.2 Flask 332
18.3.3 Django 336
18.3.4 其他框架 336
18.4 數據庫框架 337
18.5 Web服務和自動化 337
18.5.1 webbrowser 337
18.5.2 webview 338
18.6 Web API和REST 339
18.7 爬取數據 339
18.7.1 Scrapy 340
18.7.2 BeautifulSoup 340
18.7.3 requests-html 341
18.8 看場電影吧 341
18.9 後續內容 344
18.10 練習 344
第 19 章 成為Python主義者 345
19.1 關於編程 345
19.2 尋找Python代碼 346
19.3 安裝Python包 346
19.3.1 使用pip 346
19.3.2 使用virtualenv 347
19.3.3 使用pipenv 347
19.3.4 使用包管理器 348
19.3.5 從源代碼安裝 348
19.4 集成化開發環境 348
19.4.1 IDLE 348
19.4.2 PyCharm 348
19.4.3 IPython 349
19.4.4 Jupyter Notebook 350
19.4.5 JupyterLab 351
19.5 名稱和文檔 351
19.6 添加類型提示 352
19.7 測試 353
19.7.1 使用pylint、pyflakes 和pep8檢查代碼 353
19.7.2 使用unittest進行測試 355
19.7.3 使用doctest進行測試 358
19.7.4 使用nose進行測試 359
19.7.5 其他測試框架 360
19.7.6 持續集成 360
19.8 調試Python代碼 361
19.8.1 使用print() 361
19.8.2 使用裝飾器 362
19.8.3 使用pdb 363
19.8.4 使用breakpoint() 368
19.9 記錄錯誤消息 368
19.10 優化 370
19.10.1 測量時間 370
19.10.2 算法和數據結構 373
19.10.3 Cython、NumPy和C擴展 374
19.10.4 PyPy 374
19.10.5 Numba 374
19.11 源代碼控制 375
19.11.1 Mercurial 375
19.11.2 Git 376
19.12 分發你的程序 378
19.13 克隆本書 378
19.14 更多內容 378
19.14.1 圖書 379
19.14.2 網站 379
19.14.3 團體 380
19.14.4 會議 380
19.14.5 Python相關的工作機會 380
19.15 後續內容 380
19.16 練習 381
第 20 章 Python的藝術 382
20.1 2D圖形 382
20.1.1 標準庫 382
20.1.2 PIL和Pillow 383
20.1.3 ImageMagick 386
20.2 3D圖形 387
20.3 3D動畫 387
20.4 圖形用戶界面 388
20.5 繪圖、圖形和可視化 389
20.5.1 Matplotlib 389
20.5.2 Seaborn 391
20.5.3 Bokeh 393
20.6 游戲 393
20.7 音頻和音樂 393
20.8 後續內容 394
20.9 練習 394
第 21 章 工作中的Python 395
21.1 Microsoft Office套件 395
21.2 執行企業任務 396
21.3 處理企業數據 397
21.3.1 提取、轉換和裝載 397
21.3.2 數據驗證 400
21.3.3 其他信息源 400
21.4 開源Python企業包 400
21.5 金融中的Python 401
21.6 商業數據安全 401
21.7 地圖 402
21.7.1 格式 402
21.7.2 根據shapefile繪制地圖 403
21.7.3 Geopandas 405
21.7.4 其他繪圖包 405
21.7.5 應用和數據 406
21.8 後續內容 406
21.9 練習 406
第 22 章 Python的科學 407
22.1 標準庫中的數學和統計 407
22.1.1 數學函數 407
22.1.2 處理復數 409
22.1.3 使用decimal精確計算浮點數 410
22.1.4 使用fractions執行有理數運算 410
22.1.5 使用array創建壓縮序列 411
22.1.6 使用statistics進行簡單的統計 411
21.1.7 矩陣乘法 411
22.2 科學Python 411
22.3 NumPy 412
22.3.1 使用array()創建數組 412
22.3.2 使用arange()創建數組 413
22.3.3 使用zeros()、ones()和random()創建數組 413
22.3.4 使用reshape()改變數組的形狀 414
22.3.5 使用[]獲取元素 415
22.3.6 數組的算術運算 416
22.3.7 線性代數 417
22.4 SciPy 418
22.5 SciKit 418
22.6 Pandas 418
22.7 Python和各個科學領域 419
22.8 後續內容 420
22.9 練習 420
附錄A 寫給初級程序員的電腦軟硬件知識 421
附錄B 安裝Python 3 430
附錄C 截然不同的async 437
附錄D 習題答案 442
附錄E 速查表 483