Python 編程從入門到提高

劉臣

  • 出版商: 清華大學
  • 出版日期: 2021-10-01
  • 定價: $408
  • 售價: 8.5$347
  • 語言: 簡體中文
  • 頁數: 351
  • 裝訂: 平裝
  • ISBN: 7302587922
  • ISBN-13: 9787302587927
  • 下單後立即進貨 (約4週~6週)

  • Python 編程從入門到提高-preview-1
  • Python 編程從入門到提高-preview-2
  • Python 編程從入門到提高-preview-3
Python 編程從入門到提高-preview-1

買這商品的人也買了...

商品描述

本書主要內容分為 Python 編程入門和提高兩個組成部分。入門部分介紹 Python 語言的基礎知識, 包括環境搭建、代碼運行方式、基本語法、常用數據結構、函數編程以及面向對象編程等。提高部分介 紹重要的 Python 中高級編程知識和技術,包括高級函數編程和麵向對象編程知識,例如函數對象、裝 飾器、閉包、類的定製、多重繼承與混入、元編程等,以及性能優化技術、混合編程、並發與異步編程。 另外,本書還涵蓋了數據分析與 Web 開發兩大 Python 應用領域的基礎知識。在數據分析方面,介紹了 NumPy、SciPy、Pandas、Matplotlib、Scikit-learn 等常用工具包的基本使用方法和實例。在 Web 開發方 面,介紹了 HTTP 等 Web 開發基礎知識,以及 WebSocket 協議、WSGI 應用和 ASGI 應用的原理,並最 終使讀者能夠實現自己的 Web 編程框架。 本書可以作為電腦應用、人工智能、信息管理與信息系統等相關專業本科生編程基礎課程的教材 或參考書,也可以供 Python 學習者、Web 開發人員和數據分析研究人員參考。

作者簡介

劉臣,上海理工大學副教授,2010年畢業於哈爾濱工業大學獲博士學位。有多年的Python研究、開發與教學經驗。從事數據挖掘、機器學習、深度學習等領域的研究,主要教授Python程序設計、機器學習、自然語言處理等課程。曾主持國家自然科學基金、教育部人文社科基金等科研項目,目前的研究興趣是Web用戶行為挖掘。

目錄大綱

1章  Python 概述 1 
1.1  Python 語言 1 
1.1.1  Python 語言的發展  1 
1.1.2  Python 語言的特點  2 
1.1.3  Python 的主要應用領域  3 
1.2  Python 運行環境 3 
1.2.1  Python 的不同實現和發行版  4 
1.2.2  Python 環境的安裝  4 
1.3  Python 程序的運行 8 
1.3.1  交互模式 8  
1.3.2  腳本模式 9  
1.4  常用開發工具  10 
1.5  Python 虛擬環境 12 
1.5.1  什麼是虛擬環境 12 
1.5.2  虛擬環境的創建和使用 12 
1.6  小結 13 
1.7  思考與練習 14 
2章  Python 編程基礎 15 
2.1  變量與表達式 15 
2.1.1  變量的定義與賦值 15 
2.1.2  算術表達式 16 
2.1.3  關係表達式與邏輯表達式  17 
2.1.4  海象運算符  18 
2.1.5  運算符的優先級  19 
2.2  語句  19 
2.2.1  簡單語句 19 
2.2.2  複合語句與空語句 20 
2.2.3  註釋 21 
2.3  數據類型 21 
2.3.1  基本數據類型  22 
2.3.2  空類型 25 
2.3.3  擴展數據類型 26 
2.4  流程控制 27 
2.4.1  結構化程序設計 27 
2.4.2  選擇 27 
2.4.3  循環 29 
2.5  模塊和包 31 
2.5.1  模塊和包的導入  31 
2.5.2  自定義包  32 
2.5.3  常用內置模塊 33 
2.6  Python 編程規範 34 
2.6.1  規範編碼的重要性 34 
2.6.2  PEP8 規範 34 
2.7  小結   35 
2.8  思考與練習 36 
3章  常用數據結構 37 
3.1  序列 37 
3.1.1  序列的種類 37 
3.1.2  序列的基本作  38 
3.2  列表 41 
3.2.1  列表的定義  41 
3.2.2  列表元素的作  41 
3.2.3  列表推導式  44 
3.2.4  棧 46 
3.3  元組 46 
3.3.1  定義和使用 46 
3.3.2  元組的不可變陷阱 47 
3.3.3  生成器推導式 47 
3.4  集合 48 
3.4.1  集合的定義  48 
3.4.2  常用集合作方法 49 
3.4.3  集合推導式 50 
3.4.4  排列組合 50 
3.5  字典 51 
3.5.1  字典的定義  51 
3.5.2  字典常用作方法 52 
3.5.3  字典推導式 53 
3.6  字符串 53 
3.6.1  字符串的定義 54 
3.6.2  常用字符串處理方法 54 
3.6.3  字符串格式化 56 
3.7  二進制序列  59 
3.7.1  字節串的原理  59 
3.7.2  字節串的應用  60 
3.8  高級數據結構  60 
3.8.1  collection 模塊  60 
3.8.2  array.array  62 
3.8.3  其他有用的數據結構 63 
3.9  小結 63 
3.10  思考與練習 63 
4章  函數與函數編程  64 
4.1  函數的定義與調用 64 
4.1.1  函數的定義  64 
4.1.2  函數的調用  66 
4.1.3  變量的作用域 67 
4.2  函數的參數 69 
4.2.1  位置參數與關鍵字參數 69 
4.2.2  可選參數 71 
4.2.3  可變參數 71 
4.2.4  參數分配 72 
4.3  函數的類型註解 73 
4.3.1  類型註解 73 
4.3.2  typing 模塊 74 
4.3.3  類型註解的使用  76 
4.4  函數對象 76 
4.4.1  一等對象 76 
4.4.2  Python 函數的面向對象特徵 77 
4.4.3  Python 函數的一等對象特徵 78 
4.5  嵌套函數與閉包 80 
4.5.1  嵌套函數 80 
4.5.2  閉包 81 
4.6  函數裝飾器 84 
4.6.1  簡單函數裝飾器  84 
4.6.2  函數裝飾器的工作原理   85 
4.6.3  函數裝飾器的優化  87 
4.6.4  裝飾器的疊加 90 
4.6.5  含參裝飾器 92 
4.6.6  函數裝飾器應用實例 94 
4.6.7  重要的 Python 內置裝飾器 95 
4.7  常用函數編程工具   97 
4.7.1  常用工具函數   97 
4.7.2  operator 模塊  98 
4.7.3  itertools 模塊  98 
4.8  小結   99 
4.9  思考與練習  99 
5章  面向對象編程基礎  100 
5.1  面向對象的概念與特徵  100 
5.1.1  面向對象的概念  100 
5.1.2  類與對象   101 
5.1.3  封裝性 102 
5.1.4  繼承性  103 
5.1.5  多態性  103 
5.2  類的定義與實例化 104 
5.2.1  類的定義  104 
5.2.2  類的實例化   105 
5.2.3  成員的隱藏   108 
5.2.4  類命名空間  109 
5.3  進一步了解屬性    110 
5.3.1  類屬性與實例屬性   110 
5.3.2  property 裝飾器  111 
5.4  進一步了解方法    113 
5.4.1  實例方法、類方法與靜態方法 113 
5.4.2  方法重載  115 
5.5  類的繼承 116 
5.5.1  派生類的定義   116 
5.5.2  方法重寫  117 
5.5.3  多重繼承 119 
5.5.4  對象、類的關係  120 
5.5.5  調用基類方法   122 
5.6  混入   124 
5.6.1  混入的概念    124
5.6.2  Python 中的混入  126 
5.7  小結  130 
5.8  思考與練習  130 
6章  面向對象編程進階  131 
6.1  類的定制  131 
6.1.1  常用特殊屬性  131 
6.1.2  對象運算 134 
6.1.3  對象描述  136 
6.1.4  對象成員訪問控制  137 
6.1.5  描述器   139 
6.1.6  可調用對象   140 
6.1.7  容器    141 
6.1.8  迭代器與可迭代對象  142 
6.2  生成器   144 
6.2.1  生成器的創建   144 
6.2.2  生成器與迭代器   146 
6.3  類裝飾器     147 
6.3.1  修飾方法的裝飾器   147 
6.3.2  修飾類的裝飾器   148 
6.3.3  基於類的裝飾器   150 
6.4  抽象基類     153 
6.4.1  抽象基類的概念   153 
6.4.2  抽象基類的使用    154 
6.4.3  常用內置抽象基類  157 
6.4.4  自定義抽象基類   158 
6.5  元類    158 
6.5.1  Python 類的特徵 158 
6.5.2  元類的定義與使用  160 
6.5.3  元類的應用實例 161 
6.6  對象序列化  163 
6.6.1  pickle   164 
6.6.2  copyreg  166 
6.6.3  shelve   168 
6.7  小結   169 
6.8  思考與練習  169 
7章  調試與測試  170 
7.1  調試方法 170 
7.1.1  利用 print 調試程序 170 
7.1.2  利用 logging 調試程序 171 
7.1.3  pdb 調試器 173 
7.2  異常處理  175 
7.2.1  異常的原因   175 
7.2.2  斷言   176 
7.2.3  異常處理  177 
7.2.4  異常的類型   180 
7.3  單元測試    182 
7.3.1  單元測試的概念及工具 182 
7.3.2  unittest 基礎  183 
7.3.3  創建測試用例  184 
7.3.4  運行測試用例 185 
7.3.5  測試套件的創建與執行 186 
7.3.6  測試設施  187 
7.4  文檔測試   188 
7.4.1  文檔測試用例   188 
7.4.2  運行文檔測試   188 
7.5  小結     189 
7.6  思考與練習    189 
8章  數據處理與分析基礎  190 
8.1  文件讀寫  190 
8.1.1  文件的打開和關閉   190 
8.1.2  路徑管理   191 
8.1.3  文本文件讀寫  193 
8.1.4  二進製文件讀寫  194 
8.2  上下文管理  195 
8.2.1  with 語句塊  195 
8.2.2  上下文管理協議  196 
8.3  數據庫編程   198 
8.3.1  數據庫應用編程接口   198 
8.3.2  嵌入式數據庫編程  200 
8.4  正則表達式   202 
8.4.1  正則表達式匹配規則   202 
8.4.2  正則表達式的應用    205 
8.4.3  正則表達式的編譯   206 
8.5  數據分析中的數據結構  207 
8.5.1  NumPy    207 
8.5.2  SciPy     211 
8.6  數據可視化    214 
8.6.1  簡單繪圖    214 
8.6.2  圖像的配置與修飾  215 
8.6.3  多子圖圖像的繪製  218 
8.6.4  三維圖像的繪製   219 
8.7  Pandas 基礎   220 
8.7.1  數據結構  221 
8.7.2  數據訪問 223 
8.7.3  統計分析  225 
8.8  Scikit-learn 基礎  226 
8.8.1  Scikit-learn 簡介 226 
8.8.2  分類問題 227 
8.8.3  聚類問題  229 
8.9  小結    230 
8.10  思考與練習  230 
9章  性能優化技術 232 
9.1  程序性能分析  232 
9.1.1  time 與 timeit 232 
9.1.2  profile  235 
9.2  即時編譯技術 237 
9.2.1  即時編譯的概念 237 
9.2.2  PyPy   238 
9.2.3  Numba  239 
9.3  混合編程概念及環境搭建   242 
9.4  利用 ctypes 實現混合編程 243 
9.4.1  C 函數庫的調用 243 
9.4.2  C++ 類的包裝 247 
9.5  利用 C API 構建 Python 擴展  249 
9.5.1  構建 Python 擴展的步驟 249 
9.5.2  擴展函數 249 
9.5.3  模塊配置與初始化 252 
9.5.4  擴展的構建與安裝 252 
9.5.5  實例 252 
9.6  項目打包與發布  257 
9.6.1  打包與發布的流程  257 
9.6.2  項目打包與發布示例  259 
9.7  小結    261 
9.8  思考與練習  261 
10章  網絡編程與並發處理 262 
10.1  網絡套接字的概念 262 
10.1.1  套接字的類型 262 
10.1.2  基於套接字的網絡通信過程  263 
10.2套接字編程  264 
10.2.1  socket 模塊  264 
10.2.2  面向連接的套接字編程  266 
10.2.3  面向無連接的套接字編程 267 
10.2.4  並發問題   268 
10.3  多進程編程  269 
10.3.1  進程的創建與運行  269 
10.3.2  利用多進程處理網絡並發  271 
10.3.3  利用進程池處理網絡並發  272 
10.4  多線程編程   274 
10.4.1  線程的概念與特點  274 
10.4.2  網絡並發處理的多線程方法  275 
10.5  異步編程 275 
10.5.1  異步編程概念  275 
10.5.2  基於生成器的協程  276 
10.5.3  協程  280 
10.5.4  Python 異步編程基礎  281 
10.5.5  利用異步編程處理網絡並發  282 
10.6  套接字服務器  285 
10.6.1  socketserver 模塊簡介 285 
10.6.2  利用套接字服務器處理網絡並發  286 
10.7  小結   286 
10.8  思考與練習   287 
11章  Web 的概念與原理  288 
11.1  Web 概念與開發技術 288 
11.1.1  Web 的概念 288 
11.1.2  Web 頁面的訪問過程 290 
11.1.3  Web 開發技術棧   290 
11.2  統一資源標識符   291 
11.2.1  統一資源定位符    292 
11.2.2  URL 的解析  292 
11.3  文本標記語言   293 
11.3.1  HTML 文檔的結構  293 
11.3.2  HTML 文檔的修飾與控制  295 
11.4  文本傳輸協議   297 
11.4.1  HTTP 請求  298 
11.4.2  HTTP 響應 300 
11.4.3  HTTP 協議解析 302 
11.5  Web 服務器的工作原理 305 
11.5.1  基於套接字的 Web 服務器端