本書是為高校師生學習Python編程語言而設計編著的教材。全書分為20章,其中包括緒論,搭建開發(fā)環(huán)境,*個Python程序,Python語法基礎,數據類型,運算符,控制語句,數據結構,函數,面向對象編程,異常處理,常用模塊,正則表達式,文件操作與管理,數據庫編程,網絡編程,wxPython圖形用戶界面編程,Python多線程編程,以及*后給出的兩個實戰(zhàn)項目項目實戰(zhàn)1: 網絡爬蟲與爬取股票數據和項目實戰(zhàn)2: 數據可視化與股票數據分析。每一章后面都安排了若干同步練習題,并在附錄A中提供了參考答案。 本書既可作為高等學校計算機軟件技術課程的教材,也可作為社會培訓機構的培訓教程,還適用于廣大Python初學者和Python開發(fā)的程序員等。
Python語言誕生至今經歷了將近30年時間,但是在前20年里,國內使用Python語言進行軟件開發(fā)的程序員并不多,而在近5年,人們對Python語言的關注度迅速提高,這并不僅僅是因為Python語言非常優(yōu)秀,而是Python語言滿足了當下科學計算、人工智能、大數據和區(qū)塊鏈等新技術的發(fā)展需要。Python語言是一種膠水語言,具有豐富的動態(tài)特性、簡單的語法結構和面向對象的編程特點,并擁有成熟而豐富的第三方庫。Python語言適合于除硬件開發(fā)之外的幾乎所有領域的軟件開發(fā)。
本書是智捷課堂開發(fā)的又一本立體化圖書,配套了課件和服務等內容。本書每一章節(jié)知識點安排合理,講解得非常細致,非常適合零基礎讀者學習Python語言,如果讀者能夠認真學習本書,將能獨立開發(fā)Python網絡爬蟲和數據可視化項目。
本書服務網址
為了更好地為廣大讀者提供服務,我們專門為本書建立了一個服務網址http://www.zhijieketang.com/group/9,希望讀者對書中內容發(fā)表評論,提出寶貴意見。
下載源代碼
書中包括了200多個完整的案例項目源代碼,大家可以到本書網站http://www.zhijieketang.com/group/9免費注冊并下載。
源代碼目錄結構
本書作為一本介紹Python編程的書,提供了很多示例源代碼。下載本書源代碼并解壓,讀者會看到如圖01所示的目錄結構。圖01中的chapter3~chapter20是本書第3章~第20章配套示例源代碼,ch6.6.1.py文件則是第6.6.1節(jié)示例代碼。
圖01示例源代碼目錄結構
勘誤與支持
如果讀者發(fā)現了任何問題,均可以通過清華大學出版社電子信息讀者服務QQ群628808216聯(lián)系編輯,我們會在第一時間給予回復。
致謝
感謝清華大學出版社的盛東亮編輯給本書提出的寶貴意見。感謝智捷課堂團隊的趙志榮、趙大羽、關錦華、閆婷嬌、王馨然、關秀華、閆喜華和趙浩丞參與本書內容討論和審核。感謝趙浩丞手繪了書中全部草圖,并從專業(yè)的角度修改書中圖片,力求將這些圖片更加真實完美地奉獻給廣大讀者。感謝我的家人容忍我的忙碌和對我的關心及照顧,使我能抽出時間,投入全部精力專心地編寫此書。
由于時間倉促,書中難免存在不妥之處,敬請讀者批評指正。
關東升2019年7月
關東升,國內知名iOS技術作家,iOS技術顧問,高級培訓講師。精通iOS、Android和Windows Phone 7開發(fā),曾先后主持開發(fā)大型網絡游戲神農訣Android和iOS 客戶端、國家農產品追溯系統(tǒng)iPad客戶端、大型團購網站移動端開發(fā)、金融系統(tǒng)微博iOS,WP7,Android客戶端開發(fā),在App Store發(fā)布多款游戲和應用軟件,擅長移動平臺的應用和游戲類項目開發(fā)。
精通JAVA、JAVAEE、Spring和AJAX等,擅長基于J2EE構架的系統(tǒng)設計和數據庫設計開發(fā)。精通微軟.NET體系結構、移動開發(fā)、設計模式與軟件架構,擅長軟件系統(tǒng)的架構、分析與設計。曾參與開發(fā)北京公交一卡通系統(tǒng)、日本NEC委托開發(fā)系統(tǒng)、中國移動廣東分公司業(yè)務報表系統(tǒng)。
近期為中國移動、大唐電信、中石油等公司提供企業(yè)內訓,課程涵蓋iOS、Android 、JAVA和.NET等方面。安博教育集團認證金牌講師。CSDN、51CTO等IT技術網站技術專家。
第1章緒論
1.1Python語言歷史
1.2Python語言設計哲學Python之禪
1.3Python語言特點
1.4Python語言應用前景
1.5如何獲得幫助
1.6同步練習
第2章搭建開發(fā)環(huán)境
2.1搭建Python環(huán)境
2.2PyCharm開發(fā)工具
2.2.1下載和安裝
2.2.2設置Python解釋器
2.3Eclipse PyDev開發(fā)工具
2.3.1JDK下載和安裝
2.3.2設置環(huán)境變量
2.3.3Eclipse下載和安裝
2.3.4安裝PyDev插件
2.3.5設置Python解釋器
2.3.6設置UTF8編碼
2.4Visual Studio Code開發(fā)工具
2.5文本編輯工具
2.6本章小結
2.7同步練習
第3章第一個Python程序
3.1使用Python Shell實現
3.2使用PyCharm實現
3.2.1創(chuàng)建項目
3.2.2創(chuàng)建Python代碼文件
3.2.3編寫代碼
3.2.4運行程序
3.3使用Eclipse PyDev插件實現
3.3.1創(chuàng)建項目
3.3.2創(chuàng)建Python代碼文件
3.3.3運行程序
3.4使用Visual Studio Code實現
3.4.1創(chuàng)建Python代碼文件
3.4.2運行程序
3.5使用文本編輯工具 Python解釋器實現
3.5.1編寫代碼
3.5.2運行程序
3.6代碼解釋
3.7本章小結
3.8同步練習
第4章Python語法基礎
4.1標識符和關鍵字
4.1.1標識符
4.1.2關鍵字
4.2變量和常量
4.2.1變量
4.2.2常量
4.3注釋
4.4語句
4.5模塊
4.6包
4.6.1創(chuàng)建包
4.6.2導入包
4.7本章小結
4.8同步練習
第5章數據類型
5.1數字類型
5.1.1整數類型
5.1.2浮點類型
5.1.3復數類型
5.1.4布爾類型
5.2數字類型相互轉換
5.2.1隱式類型轉換
5.2.2顯式類型轉換
5.3字符串類型
5.3.1字符串表示方式
5.3.2字符串格式化
5.3.3字符串查找
5.3.4字符串與數字相互轉換
5.4本章小結
5.5同步練習
第6章運算符
6.1算術運算符
6.1.1一元運算符
6.1.2二元運算符
6.2關系運算符
6.3邏輯運算符
6.4位運算符
6.5賦值運算符
6.6其他運算符
6.6.1同一性測試運算符
6.6.2成員測試運算符
6.7運算符優(yōu)先級
6.8本章小結
6.9同步練習
第7章控制語句
7.1分支語句
7.1.1if結構
7.1.2ifelse結構
7.1.3elif結構
7.1.4三元運算符替代品條件表達式
7.2循環(huán)語句
7.2.1while語句
7.2.2for語句
7.3跳轉語句
7.3.1break語句
7.3.2continue語句
7.3.3while和for中的else語句
7.4使用范圍
7.5本章小結
7.6同步練習
第8章數據結構
8.1元組
8.1.1序列
8.1.2創(chuàng)建元組
8.1.3訪問元組
8.1.4遍歷元組
8.2列表
8.2.1創(chuàng)建列表
8.2.2追加元素
8.2.3插入元素
8.2.4替換元素
8.2.5刪除元素
8.2.6其他常用方法
8.2.7列表推導式
8.3集合
8.3.1創(chuàng)建可變集合
8.3.2修改可變集合
8.3.3遍歷集合
8.3.4不可變集合
8.3.5集合推導式
8.4字典
8.4.1創(chuàng)建字典
8.4.2修改字典
8.4.3訪問字典
8.4.4遍歷字典
8.4.5字典推導式
8.5本章小結
8.6同步練習
第9章函數
9.1定義函數
9.2函數參數
9.2.1使用關鍵字參數調用函數
9.2.2參數默認值
9.2.3可變參數
9.3函數返回值
9.3.1無返回值函數
9.3.2多返回值函數
9.4函數變量作用域
9.5生成器
9.6嵌套函數
9.7函數式編程基礎
9.7.1函數類型
9.7.2Lambda表達式
9.7.3三大基礎函數
9.8本章小結
9.9同步練習
第10章面向對象編程
10.1面向對象概述
10.2面向對象三個基本特性
10.2.1封裝性
10.2.2繼承性
10.2.3多態(tài)性
10.3類和對象
10.3.1定義類
10.3.2創(chuàng)建和使用對象
10.3.3實例變量
10.3.4類變量
10.3.5構造方法
10.3.6實例方法
10.3.7類方法
10.3.8靜態(tài)方法
10.4封裝性
10.4.1私有變量
10.4.2私有方法
10.4.3定義屬性
10.5繼承性
10.5.1繼承概念
10.5.2重寫方法
10.5.3多繼承
10.6多態(tài)性
10.6.1多態(tài)概念
10.6.2類型檢查
10.6.3鴨子類型
10.7Python根類object
10.7.1str()方法
10.7.2對象比較方法
10.8枚舉類
10.8.1定義枚舉類
10.8.2限制枚舉類
10.8.3使用枚舉類
10.9本章小結
10.10同步練習
第11章異常處理
11.1異常問題舉例
11.2異常類繼承層次
11.3常見異常
11.3.1AttributeError異常
11.3.2OSError異常
11.3.3IndexError異常
11.3.4KeyError異常
11.3.5NameError異常
11.3.6TypeError異常
11.3.7ValueError異常
11.4捕獲異常
11.4.1tryexcept語句
11.4.2多except代碼塊
11.4.3tryexcept語句嵌套
11.4.4多重異常捕獲
11.5異常堆棧跟蹤
11.6釋放資源
11.6.1finally代碼塊
11.6.2else代碼塊
11.6.3with as代碼塊自動管理資源
11.7自定義異常類
11.8顯式拋出異常
11.9本章小結
11.10同步練習
第12章常用模塊
12.1math模塊
12.1.1舍入函數
12.1.2冪和對數函數
12.1.3三角函數
12.2random模塊
12.3datetime模塊
12.3.1datetime、date和time類
12.3.2日期和時間計算
12.3.3日期和時間格式化和解析
12.3.4時區(qū)
12.4logging日志模塊
12.4.1日志級別
12.4.2日志信息格式化
12.4.3日志重定位
12.4.4配置文件的使用
12.5本章小結
12.6同步練習
第13章正則表達式
13.1正則表達式字符串
13.1.1元字符
13.1.2字符轉義
13.1.3開始與結束字符
13.2字符類
13.2.1定義字符類
13.2.2字符類取反
13.2.3區(qū)間
13.2.4預定義字符類
13.3量詞
13.3.1量詞的使用
13.3.2貪婪量詞和懶惰量詞
13.4分組
13.4.1分組的使用
13.4.2分組的命名
13.4.3反向引用分組
13.4.4非捕獲分組
13.5re模塊
13.5.1search()和match()函數
13.5.2findall()和finditer()函數
13.5.3字符串分割
13.5.4字符串替換
13.6編譯正則表達式
13.6.1已編譯正則表達式對象
13.6.2編譯標志
13.7本章小結
13.8同步練習
第14章文件操作與管理
14.1文件操作
14.1.1文件打開
14.1.2文件關閉
14.1.3文本文件讀寫
14.1.4二進制文件讀寫
14.2os模塊
14.3os.path模塊
14.4本章小結
14.5同步練習
第15章數據庫編程
15.1數據持久化技術概述
15.2MySQL數據庫管理系統(tǒng)
15.2.1數據庫安裝與配置
15.2.2連接MySQL服務器
15.2.3常見的管理命令
15.3Python DBAPI
15.3.1建立數據連接
15.3.2創(chuàng)建游標
15.4案例: MySQL數據庫CRUD操作
15.4.1安裝PyMySQL模塊
15.4.2數據庫編程的一般過程
15.4.3數據查詢操作
15.4.4數據修改操作
15.5NoSQL數據存儲
15.5.1dbm數據庫的打開和關閉
15.5.2dbm數據存儲
15.6本章小結
15.7同步練習
第16章網絡編程
16.1網絡基礎
16.1.1網絡結構
16.1.2TCP/IP協(xié)議
16.1.3IP地址
16.1.4端口
16.2TCP Socket低層次網絡編程
16.2.1 TCP Socket通信概述
16.2.2TCP Socket通信過程
16.2.3TCP Socket編程API
16.2.4案例: 簡單聊天工具
16.2.5案例: 文件上傳工具
16.3UDP Socket低層次網絡編程
16.3.1UDP Socket編程API
16.3.2案例: 簡單聊天工具
16.3.3案例: 文件上傳工具
16.4訪問互聯(lián)網資源
16.4.1URL概念
16.4.2HTTP/HTTPS協(xié)議
16.4.3使用urllib庫
16.4.4發(fā)送GET請求
16.4.5發(fā)送POST請求
16.4.6實例: Downloader
16.5本章小結
16.6同步練習
第17章wxPython圖形用戶界面編程
17.1Python圖形用戶界面開發(fā)工具包
17.2wxPython安裝
17.3wxPython基礎
17.3.1wxPython類層次結構
17.3.2第一個wxPython程序
17.3.3wxPython界面構建層次結構
17.4事件處理
17.4.1一對一事件處理
17.4.2一對多事件處理
17.4.3示例: 鼠標事件處理
17.5布局管理
17.5.1Box布局器
17.5.2StaticBox布局
17.5.3Grid布局
17.5.4FlexGrid布局
17.6wxPython控件
17.6.1靜態(tài)文本和按鈕
17.6.2文本輸入
17.6.3復選框和單選按鈕
17.6.4下拉列表
17.6.5列表
17.6.6靜態(tài)圖片
17.7高級窗口
17.7.1分隔窗口
17.7.2使用樹
17.7.3使用網格
17.8使用菜單
17.9使用工具欄
17.10本章小結
17.11同步練習
第18章Python多線程編程
18.1基礎知識
18.1.1進程
18.1.2線程
18.2threading模塊
18.3創(chuàng)建線程
18.3.1自定義函數作為線程體
18.3.2繼承Thread線程類實現線程體
18.4線程管理
18.4.1等待線程結束
18.4.2線程停止
18.5線程安全
18.5.1臨界資源問題
18.5.2多線程同步
18.6線程間通信
18.6.1使用Condition實現線程間通信
18.6.2使用Event實現線程間通信
18.7本章小結
18.8同步練習
第19章項目實戰(zhàn)1: 網絡爬蟲與爬取股票數據
19.1網絡爬蟲技術概述
19.1.1網絡通信技術
19.1.2多線程技術
19.1.3數據交換技術
19.1.4Web前端技術
19.1.5數據分析技術
19.1.6數據存儲技術
19.2爬取數據
19.2.1網頁中靜態(tài)和動態(tài)數據
19.2.2使用urllib爬取數據
19.2.3使用Selenium爬取數據
19.3分析數據
19.3.1使用正則表達式
19.3.2使用BeautifulSoup庫
19.4項目實戰(zhàn): 爬取納斯達克股票數據
19.4.1爬取數據
19.4.2檢測數據是否更新
19.4.3分析數據
19.4.4保存數據到數據庫
19.4.5爬蟲工作計劃任務
第20章項目實戰(zhàn)2: 數據可視化與股票數據分析
20.1使用Matplotlib繪制圖表
20.1.1安裝Matplotlib
20.1.2圖表基本構成要素
20.1.3繪制折線圖
20.1.4繪制柱狀圖
20.1.5繪制餅狀圖
20.1.6繪制散點圖
20.1.7繪制子圖表
20.2項目實戰(zhàn): 納斯達克股票數據分析
20.2.1從數據庫提取股票數據
20.2.2繪制股票成交量折線圖
20.2.3繪制股票O(jiān)HLC柱狀圖
20.2.4繪制股票K線圖
附錄A同步練習參考答案
A.1第1章緒論
A.2第2章搭建開發(fā)環(huán)境
A.3第3章第一個Python程序
A.4第4章Python語法基礎
A.5第5章數據類型
A.6第6章運算符
A.7第7章控制語句
A.8第8章數據結構
A.9第9章函數
A.10第10章面向對象編程
A.11第11章異常處理
A.12第12章常用模塊
A.13第13章正則表達式
A.14第14章文件操作與管理
A.15第15章數據庫編程
A.16第16章網絡編程
A.17第17章wxPython圖形用戶界面編程
A.18第18章Python多線程編程