Python 是一種面向?qū)ο、解釋型計算機程序設計語言,其語法簡潔清晰、易于學習,幾乎可以在所有的操作系統(tǒng)下運行。Python 常被稱為“膠水”語言,因為它能夠把不同語言編寫的各個模塊輕松地組織在一起,從而將眾多的優(yōu)秀 Fortran 和 C 語言庫集成到 Pyhton 環(huán)境下,幫助開發(fā)者處理各種工作。Python 的優(yōu)秀特性決定了其在實際應用中的廣泛性,在很多領域如快速原型開發(fā)、網(wǎng)絡服務器腳本、科學計算、文檔處理、數(shù)據(jù)庫編程、嵌入開發(fā)、GUI開發(fā)、游戲開發(fā)和移動開發(fā)中均有廣泛應用。目前 Python 語言越來越受到重視,并已有大量成功的案例,如 YouTube(視頻分享網(wǎng)站)、豆瓣(社區(qū)網(wǎng)站)、OpenStack(云計算平臺)和Tornado(Web 服務器)等都是基于Python 開發(fā)的。
本書既介紹了 Python 的基礎知識,也介紹了很多 Python 的高級話題,并附有實例,是一本即學即用的書。本書首先介紹了 Python 的數(shù)據(jù)類型、編程語法、函數(shù)、類和模塊等基礎知識,然后介紹了 Python 在網(wǎng)絡、數(shù)據(jù)庫、正則表達式和大數(shù)據(jù)方面的應用。本書每一章的最后都介紹了與該章內(nèi)容相關的高級話題,這些高級話題可直接在數(shù)據(jù)處理、網(wǎng)站開發(fā)和數(shù)據(jù)庫管理等領域使用,使得讀者每學習一章即可通過該章內(nèi)容解決工作、科研中的實際問題,充分體現(xiàn)了即學即用特點,突破了以往必須將書讀完才能用于實戰(zhàn)的思路。高級話題涵蓋了大數(shù)據(jù)分析用的 NumPy、SciPy、PyTables 和 pandas 等工具,講解了如何采集數(shù)據(jù)以及如何為調(diào)研報告生成漂亮的圖表等內(nèi)容。書中的案例采用實際項目使用的小測試案例,具有極強的實用性。
本書使用 Anaconda Python 作為開發(fā)環(huán)境。Anaconda 是 Python 的科學技術包的合集,包含了大量的科學計算包,如 NumPy、SicPy 和 Matplotlib 等,并支持 Windows、Linux、OS X環(huán)境。相比其他 Python 集成開發(fā)環(huán)境,Anaconda 不僅支持 Python 2.X,而且支持 Python 3.X的科學計算包?蓮 Anaconda 的官網(wǎng)(https://www.continuum.io/downloads)下載相應版本的 Anaconda。如果 Anaconda 未包含書中所用的模塊,可參考第 1 章介紹的 pip 和 easy_install的方法安裝相應模塊。
本書的第 6 章由張秀鳳編寫,第 10 章由丁維才編寫,其余內(nèi)容由本人編寫。寫書過程中,經(jīng)常忽視女兒的好玩天性,沒能很好地陪伴女兒,心有愧疚。謹以此書獻給我的女兒和所有關心支持我的人。
張燕妮
出版說明
前言
第 1 章 緒論 1
1.1 Python 的特點 1
1.1.1 為何適應各種用戶需求 2
1.1.2 膠水特點 2
1.1.3 語言特點 2
1.1.4 語法風格 3
1.1.5 多平臺 5
1.1.6 豐富的支持 5
1.2 Python 版本與集成包 5
1.3 Python 的下載與安裝 6
1.3.1 下載 Python 6
1.3.2 Python 在 Windows 下的安裝 6
1.3.3 Anaconda 8
1.4 python 的 IDE 9
1.4.1 IDLE 9
1.4.2 PyCharm 9
1.4.3 Spyder 10
1.4.4 其他 IDE 11
1.5 軟件包的安裝方法 11
1.5.1 easy_install 12
1.5.2 pip 12
1.6 高級話題:Matplotlib 13
1.6.1 Matplotlib 特點 13
1.6.2 Matplotlib 繪圖 13
1.6.3 用 Matplotlib 繪制股票歷史 K 線圖 15
1.7 小結(jié) 17
第 2 章 數(shù)據(jù)類型 18
2.1 數(shù)字數(shù)據(jù)類型 18
2.1.1 布爾型 bool 19
2.1.2 基本整型 int 20
2.1.3 長整型 20
2.1.4 雙精度浮點型 float 21
2.1.5 十進制浮點型 Decimal 21
2.1.6 復數(shù) Complex 22
2.1.7 數(shù)字運算符 23
2.1.8 數(shù)字類型函數(shù) 24
2.2 序列 26
2.2.1 字符串 28
2.2.2 列表 39
2.2.3 元組 45
2.3 字典 48
2.3.1 字典創(chuàng)建 48
2.3.2 字典訪問 49
2.3.3 字典相關函數(shù) 51
2.4 高級話題:NumPy 54
2.4.1 NumPy 數(shù)組與 Python 列表的區(qū)別 54
2.4.2 NumPy 數(shù)據(jù)類型 55
2.5 小結(jié) 57
第 3 章 控制流程與運算 58
3.1 選擇結(jié)構(gòu) 58
3.1.1 單分支結(jié)構(gòu) 58
3.1.2 雙分支結(jié)構(gòu) 59
3.1.3 多分支結(jié)構(gòu) 60
3.1.4 條件表達式 62
3.2 循環(huán)結(jié)構(gòu) 62
3.2.1 while 語句 62
3.2.2 for 語句 65
3.3 高級話題:NumPy 的數(shù)組操作 70
3.3.1 創(chuàng)建數(shù)組 70
3.3.2 索引和切片 71
3.3.3 數(shù)組對象的屬性 72
3.3.4 數(shù)組和標量之間的運算 73
3.3.5 數(shù)組的轉(zhuǎn)置 74
3.3.6 通用函數(shù) 74
3.3.7 統(tǒng)計方法 75
3.3.8 集合運算 76
3.3.9 隨機數(shù) 76
3.3.10 排序 77
3.3.11 線性代數(shù) 78
3.3.12 訪問文件 78
3.4 小結(jié) 79
第 4 章 函數(shù)與函數(shù)式編程 80
4.1 函數(shù) 80
4.1.1 定義函數(shù) 80
4.1.2 函數(shù)調(diào)用 82
4.1.3 內(nèi)部/內(nèi)嵌函數(shù) 82
4.2 函數(shù)參數(shù) 83
4.2.1 標準化參數(shù) 83
4.2.2 可變數(shù)量的參數(shù) 86
4.2.3 函數(shù)傳遞 89
4.3 裝飾器 90
4.3.1 無參數(shù)裝飾器 90
4.3.2 帶參數(shù)裝飾器 93
4.4 函數(shù)式編程 94
4.4.1 lambda 表達式 94
4.4.2 內(nèi)建函數(shù) map、filter 、reduce 96
4.4.3 偏函數(shù)應用 98
4.5 變量作用域 99
4.5.1 全局變量和局部變量 99
4.5.2 global 語句 100
4.5.3 閉包與外部作用域 101
4.6 遞歸 102
4.7 生成器 102
4.8 高級話題:SciPy 104
4.8.1 傅里葉變換 105
4.8.2 濾波 107
4.9 小結(jié) 109
第 5 章 文件 110
5.1 磁盤文件 110
5.1.1 打開、關閉磁盤文件 110
5.1.2 寫文件 112
5.1.3 讀文件 114
5.1.4 文件指針操作 116
5.2 StringIO 類文件 116
5.3 文件系統(tǒng)操作 120
5.3.1 os 模塊 120
5.3.2 os.path 模塊 124
5.3.3 shutil 模塊 127
5.4 高級話題:Python 讀寫 Excel 文件 130
5.4.1 xlwt 庫 130
5.4.2 xlrd 庫 133
5.4.3 xlutils 庫 134
5.4 小結(jié) 135
第 6 章 模塊包 136
6.1 模塊 136
6.1.1 搜索路徑 136
6.1.2 導入模塊 137
6.1.3 導入指定的模塊屬性 137
6.1.4 加載模塊 138
6.1.5 名稱空間 138
6.1.6 “編譯的”Python 文件 139
6.1.7 自動導入模塊 139
6.1.8 循環(huán)導入 139
6.2 包 141
6.3 高級話題:程序打包 142
6.3.1 Distutils 142
6.3.2 py2exe 144
6.4 小結(jié) 144
第 7 章 類 145
7.1 基本概念 145
7.2 類定義 146
7.3 實例 148
7.3.1 創(chuàng)建實例 148
7.3.2 初始化 149
7.3.3 _dict_屬性 151
7.3.4 特殊方法 152
7.4 繼承 155
7.5 多態(tài) 158
7.6 可見性 159
7.7 python 類中的屬性 160
7.8 高級話題:抽象基類 163
7.9 小結(jié) 166
第 8 章 數(shù)據(jù)庫 167
8.1 DB-API2.0 167
8.2 Psycopg 2 170
8.3 MySQL 173
8.4 高級話題:ORM 175
8.5 小結(jié) 178
第 9 章 網(wǎng)絡編程 179
9.1 網(wǎng)絡基礎 179
9.2 CGI 182
9.2.1 CGI 模塊 182
9.2.2 WSGI 183
9.3 高級話題:Flask 184
9.3.1 Flask 簡介 184
9.3.2 Flask-SQLAlchemy 185
9.3.3 Flask-WTF 186
9.3.4 Jinja2 187
9.3.5 用 Matplotlib 與 Flask 顯示動態(tài)圖片 189
9.3.6 Flask-Script 190
9.3.7 Flask 程序運行 191
9.4 小結(jié) 192
第 10 章 正則表達式 193
10.1 Python 的正則表達式語法 193
10.2 re 模塊 195
10.2.1 Python 正則表達式用法 195
10.2.2 編譯一個模式 197
10.2.3 模式替換 198
10.3 高級話題:Beautiful Soup 198
10.4 小結(jié) 202
第 11 章 圖形用戶界面編程 203
11.1 Tkinter 203
11.1.1 Tkinter 組件 203
11.1.2 Tkinter 回調(diào)、綁定 206
11.1.3 Matplotlib 應用于 Tkinter 208
11.2 高級話題:PyQt 210
11.2.1 PyQt 介紹 210
11.2.2 PyQt 的事件 214
11.2.3 PyQt 的 ToDo 實例 215
11.3 小結(jié) 219
第 12 章 大數(shù)據(jù)的利器 220
12.1 JSON 220
12.1.1 JSON 格式定義 220
12.1.2 simplejson 庫 221
12.1.3 通過 JSON 讀取匯率 226
12.2 XML 227
12.2.1 XML 基本定義 227
12.2.2 LXML 庫使用 228
12.2.3 通過 XML 讀取新浪和人民網(wǎng)的 RSS 229
12.3 HDF5 229
12.3.1 HDF5 格式定義 229
12.3.2 PyTables 使用 230
12.4 pandas 232
12.4.1 pandas 介紹 232
12.4.2 pandas 的 Series 232
12.4.3 DataFrame 的創(chuàng)建 234
14.4.4 DataFrame 的索引訪問 235
12.4.5 DataFrame 的數(shù)據(jù)賦值 239
12.4.6 DataFrame 的基本運算 239
12.4.7 pandas 的 IO 操作 240
12.4.8 pandas 讀取 EIA 的原油價格 241
12.5 小結(jié) 243
附錄 244
附錄 A Python 編譯安裝 244
附錄 B Virtualenv Python 虛擬環(huán)境 246
附錄 C Python 2 還是 Python 3 248
附錄 D 科學家的 Python 252
附錄 E 無處不在的 Python 253