高階 Python:代碼精進之路

李輝,韓慧昌

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

商品描述

本書詳細地介紹了Python語言的一些高級功能以及常見數據類型的高級用法,非常適合有一定基礎的讀者深入學習Python編程。本書的主要內容包括常見內置類型(數值、字符串和集合等)的高級用法和潛在的陷阱,用於文本處理的格式化方法和正則表達式,用於數值計算和大規模數據處理的math包和numpy包等。此外,文件存儲、隨機數生成和圖表繪制也是本書的重要內容。本書還開發了一個“RPN腳本解釋器”項目,該項目貫穿本書的各個章節,通過對該項目的學習,你也可以開發出自己的“語言”。

目錄大綱

第1章 基礎知識復習 1.1 Python快速入門 1.2 變量和命名 1.3 復合賦值運算符 1.4 Python算術運算符簡介 1.5 基本數據類型:整數和浮點 1.6 基本輸入與輸出 1.7 函數定義 1.8 Python中的if語句 1.9 Python中的while語句 1.10 幾個很棒的小應用程序 1.11 Python布爾運算符總結 1.12 函數的參數和返回值 1.13 前向引用問題 1.14 Python的字符串 1.15 Python列表(和一個很棒的排序應用程序) 1.16 for語句和range函數 1.17 Python元組 1.18 字典 1.19 集合 1.20 全局和局部變量 總結 習題 推薦項目 第2章 字符串高級功能 2.1 不可變的字符串 2.2 數據類型轉換 2.3 字符串運算符(+、=、*、>等) 2.4 索引和切片 2.5 單字符函數 2.6 用join函數構建字符串 2.7 重要的字符串函數 2.8 二進制、八進制和十六進制轉換函數 2.9 字符串的布爾方法 2.10 大小寫轉換方法 2.11 字符串的搜索和替換 2.12 使用split方法拆分字符串 2.13 從字符串中剝離字符 2.14 字符串對齊 總結 習題 推薦項目 第3章 高級列表功能 3.1 創建和使用Python列表 3.2 復制列表與復制列表變量 3.3 列表索引 3.3.1 正索引 3.3.2 負索引 3.3.3 使用enumerate生成索引號 3.4 從列表切片中獲取數據 3.5 列表切片賦值 3.6 列表運算符 3.7 淺拷貝與深拷貝 3.8 列表函數 3.9 列表方法:修改列表 3.10 列表方法:獲取列表信息 3.11 列表方法:重新排序 3.12 堆棧列表:RPN應用 3.13 reduce函數 3.14 lambda表達式(匿名函數) 3.15 列表推導式 3.16 字典和集合推導式 3.17 通過列表傳遞參數 3.18 多維列表 3.18.1 不平衡矩陣 3.18.2 創建任意大的矩陣 總結 習題 推薦項目 第4章 編程技巧、命令行和程序包 4.1 概述 4.2 22個編程技巧 4.2.1 根據需要使Python命令跨越多行 4.2.2 合理使用for循環 4.2.3 使用組合運算符(+=等) 4.2.4 進行多重賦值 4.2.5 使用元組賦值 4.2.6 使用高級元組賦值 4.2.7 使用列表和字符串“乘法” 4.2.8 返回多個值 4.2.9 使用循環和else關鍵字 4.2.10 使用布爾值和not運算符 4.2.11 將字符串視為字符列表 4.2.12 使用replace方法消除字符 4.2.13 不寫不必要的循環 4.2.14 使用鏈式比較(n < x < m) 4.2.15 用函數列表模擬switch語句 4.2.16 正確使用is運算符 4.2.17 使用單行for循環 4.2.18 將多條語句壓縮到一行 4.2.19 編寫單行if/then/else語句 4.2.20 用range函數創建枚舉值 4.2.21 在IDLE中減少效率低下的print函數的使用 4.2.22 用下畫線分隔大數字 4.3 從命令行運行Python 4.3.1 在Windows系統上運行 4.3.2 在Macintosh系統上運行 4.3.3 使用pip或pip3下載軟件包 4.4 編寫和使用文檔字符串 4.5 導入軟件包 4.6 Python軟件包簡介 4.7 Python函數作為一類對象 4.8 可變長度參數列表 4.8.1 *args列表參數 4.8.2 **kwargs列表參數 4.9 裝飾器和函數分析器 4.10 生成器 4.10.1 什麽是迭代器 4.10.2 關於生成器 4.11 訪問命令行參數 總結 習題 推薦項目 第5章 精確格式化文本 5.1 使用字符串格式說明符(%)進行格式化 5.2 %格式說明符 5.3 使用%創建可變寬度輸出字段 5.4 全局函數format 5.5 format方法介紹 5.6 根據position(名稱或索引)引用參數 5.7 repr轉換與str轉換 5.8 format函數/方法的spec字段 5.8.1 輸出字段的寬度 5.8.2 文本對齊:fill和align字符 5.8.3 符號字符sign 5.8.4 前導“0”字符 5.8.5 千位分隔符 5.8.6 精度符號precision 5.8.7 將precision用於字符串格式化 5.8.8 類型說明符type 5.8.9 以二進制顯示 5.8.10 以八進制和十六進制顯示 5.8.11 顯示百分數 5.8.12 二進製表示的例子 5.9 可變長字段 總結 習題 推薦項目 第6章 正則表達式 第1部分 6.1 正則表達式簡介 6.2 實用案例:電話號碼 6.3 改進匹配模式 6.4 正則表達式是如何工作的:編譯與運行 6.5 忽略大小寫和其他功能標志 6.6 正則表達式:基本語法摘要 6.6.1 元字符 6.6.2 字符集 6.6.3 模式量詞 6.6.4 回溯、貪婪和非貪婪 6.7 一個實用的正則表達式案例 6.8 使用match對象 6.9 在字符串中搜索模式 6.10 迭代搜索findall 6.11 findall函數和分組問題 6.12 搜索重復模式 6.13 文本替換 總結 習題 推薦項目 第7章 正則表達式,第2部分 7.1 正則表達式高級語法摘要 7.2 非標記組 7.2.1 匹配規範數字示例 7.2.2 解決標記問題 7.3 貪婪匹配與非貪婪匹配 7.4 先行斷言 7.5 使用先行斷言檢查多個模式 7.6 負向先行斷言 7.7 命名組 7.8 re.split函數 7.9 Scanner類和RPN項目 7.10 RPN:使用掃描器做更多的事情 總結 習題 推薦項目 第8章 文本和二進制文件 8.1 兩種文件格式:文本文件和二進制文件 8.1.1 文本文件 8.1.2 二進制文件 8.2 二進制文件讀寫方法摘要 8.3 文件/目錄系統 8.4 處理文件打開異常 8.5 使用with關鍵字 8.6 讀/寫操作總結 8.7 文本文件操作詳解 8.8 使用文件指針(seek) 8.9 將文本讀入RPN項目 8.9.1 更新RPN解釋器代碼 8.9.2 從文本文件讀取RPN 8.9.3 向RPN中添加賦值運算符 8.10 直接讀/寫二進制文件 8.11 將數據轉換為定長字段(struct) 8.11.1 一次讀/寫一個數字 8.11.2 一次讀/寫多個數字 8.11.3 讀/寫固定長度的字符串 8.11.4 讀/寫可變長度的字符串 8.11.5 讀/寫字符串和數字的組合 8.11.6 底層細節——高位優先和低位優先 8.12 使用pickle軟件包 8.13 使用shelve軟件包 總結 習題 推薦項目 第9章 類和魔術方法 9.1 類和對象的基礎語法 9.2 Python中的實例變量 9.3 __init__和__new__方法 9.4 類和前向引用問題 9.5 Python中的方法 9.6 公有和私有變量與方法 9.7 繼承 9.8 多重繼承 9.9 魔術方法總結 9.10 魔術方法詳解 9.10.1 Python類的字符串表示 9.10.2 對象表示方法 9.10.3 比較方法 9.10.4 算術運算符方法 9.10.5 一元算術方法 9.10.6 反向方法 9.10.7 就地運算符 9.10.8 轉換方法 9.10.9 集合類方法 9.10.10 實現__iter__和__next__方法 9.11 支持多種參數類型 9.12 動態設置和獲取屬性 總結 習題 推薦項目 第10章 Decimal、Money和其他類型 10.1 數值類型概述 10.2 浮點類型的局限性 10.3 Decimal類 10.4 Decimal對象的特殊操作 10.5 Decimal類的應用 10.6 設計Money類 10.7 構建基礎的Money類(“包含”方式) 10.8 顯示Money對象(__str__、__repr__) 10.9 其他有關Money類的操作 10.10 程序Demo:Money計算器 10.11 設置默認貨幣 10.12 Money類與繼承 10.13 Fraction類 10.14 complex類 總結 習題 建議項目 第11章 random包和math包 11.1 random包概述 11.2 隨機函數總覽 11.3 測試random包的行為 11.4 猜數字游戲 11.5 創建Deck對象 11.6 在牌庫中添加圖形 11.7 繪制正態分佈圖 11.8 編寫自己的隨機數生成器 11.8.1 生成隨機數的原理 11.8.2 簡單的生成器 11.9 math包概述 11.10 math包函數概覽 11.11 使用特殊值(pi) 11.12 三角函數:計算樹的高度 11.13 對數:再來一局猜數字 11.13.1 對數如何工作 11.13.2 將對數應用於實際問題 總結 習題 推薦項目 第12章 Python科學計算包——numpy 12.1 array、numpy和matplotlib軟件包概述 12.1.1 array軟件包 12.1.2 numpy軟件包 12.1.3 numpy.random軟件包 12.1.4 matplotlib軟件包 12.2 使用array軟件包 12.3 下載並導入numpy包 12.4 numpy包簡介:求1~1 000 000的和 12.5 創建numpy數組 12.5.1 array函數 12.5.2 arange函數 12.5.3 linspace函數 12.5.4 empty函數 12.5.5 eye函數 12.5.6 ones函數 12.5.7 zeros函數 12.5.8 full函數 12.5.9 copy函數 12.5.10 fromfunction函數 12.6 案例:創建一個乘法表 12.7 對numpy數組進行批處理操作 12.8 numpy數組的切片 12.9 多維切片 12.10 布爾數組:用作numpy數組的掩碼 12.11 numpy和埃拉托色尼算法 12.12 獲取numpy數組的統計信息(標準差) 12.13 從numpy數組中獲取行和列 總結 習題 推薦項目 第13章 numpy的高級應用 13.1 基於numpy的高級數學運算 13.2 下載matplotlib包 13.3 使用numpy和matplotlib繪圖 13.4 繪制多條線 13.5 繪制復利曲線 13.6 使用matplotlib創建直方圖 13.7 圓和長寬比 13.8 繪制餅圖 13.9 使用numpy進行線性代數運算 13.9.1 點積 13.9.2 外積函數 13.9.3 其他線性代數函數 13.10 三維繪圖 13.11 numpy軟件包在金融領域的應用 13.12 使用xticks和yticks函數調整數軸 13.13 numpy混合數據記錄 13.14 讀取和寫入numpy數據文件 總結 習題 推薦項目 第14章 多模塊和RPN示例 14.1 Python中的模塊概述 14.2 一個簡單的雙模塊的示例 14.3 import語句的多種形式 14.4 使用__all__符號 14.5 公有變量和模塊私有變量 14.6 主模塊和__main__函數 14.7 陷阱:相互導入問題 14.8 RPN示例:分解為兩個模塊 14.9 RPN示例:添加更多I/O指令 14.10 RPN示例的進一步修改 14.10.1 添加行號跟蹤功能 14.10.2 添加非零跳轉功能 14.10.3 大於(>)和獲取隨機數(!) 14.11 RPN案例總結 總結 習題 推薦項目 第15章 從互聯網獲取財務數據 15.1 本章計劃 15.2 pandas程序包介紹 15.3 stock_load:一個簡單的數據讀取器 15.4 創建簡單的股價圖表 15.5 添加標題和圖例 15.6 編寫makeplot函數(重構) 15.7 繪制兩支股票的價格走勢圖 15.8 繪制其他圖形 15.9 限制時間範圍 15.10 拆分圖表:對交易量進行子圖繪制 15.11 添加移動平均線 15.12 讓用戶選擇 總結 習題 推薦項目 附錄A Python運算符優先級表 附錄B Python中的內置函數 附錄C 集合(Set)方法 附錄D 字典(Dictionary)方法 附錄E 其他語法說明