章 走進Python……………………… 11.1 Python編程語言概述………………… 11.1.1 Python的歷史… …………………… 11.1.2 Python的設計哲學與應用范圍… … 21.1.3 Python 2和Python 3… ……………… 41.2 學好Python的建議…………………… 51.2.1 Python語言的特點… ……………… 51.2.2 如何學習Python?… ……………… 61.3 Python官方文檔……………………… 71.4 常用軟件……………………………… 71.5 Python開發社區……………………… 8第2章 安裝和運行Python……………… 92.1 在Windows上安裝Python…………… 92.1.1 安裝Python… ……………………… 102.1.2 運行Python… ……………………… 112.1.3 安裝文本編輯器…………………… 122.2 在Mac上安裝Python… ……………… 152.2.1 安裝Python… ……………………… 152.2.2 運行Python… ……………………… 162.2.3 安裝文本編輯器…………………… 162.3 在Linux上安裝Python… …………… 182.3.1 安裝Python… ……………………… 182.3.2 運行Python… ……………………… 192.4 小結…………………………………… 20第3章 小試Python…………………… 213.1 開始Python編程……………………… 213.1.1 數字………………………………… 213.1.2 字符串……………………………… 233.1.3 列表………………………………… 283.2 其他常見類型………………………… 293.2.1 字面量……………………………… 293.2.2 布爾類型…………………………… 293.2.3 常量………………………………… 303.3 運算符………………………………… 303.3.1 算術運算符………………………… 303.3.2 比較運算符………………………… 313.3.3 賦值運算符………………………… 323.3.4 位運算符…………………………… 343.3.5 邏輯運算符………………………… 343.3.6 關鍵字in和is… …………………… 353.4 表達式………………………………… 363.5 小結…………………………………… 363.6 知識拓展……………………………… 363.6.1 運算符優先級……………………… 363.6.2 注釋………………………………… 37第4章 數據結構… …………………… 384.1 通用序列操作………………………… 384.1.1 索引………………………………… 384.1.2 切片………………………………… 404.1.3 序列相加…………………………… 504.1.4 序列重復…………………………… 514.1.5 成員資格…………………………… 524.1.6 長度、*小值、優選值和求和…… 544.2 列表…………………………………… 554.2.1 列表更新…………………………… 554.2.2 增加元素…………………………… 564.2.3 刪除元素…………………………… 584.2.4 查找元素…………………………… 604.2.5 隊列的其他操作…………………… 614.3 元組…………………………………… 624.3.1 定義元組…………………………… 624.3.2 刪除元組…………………………… 634.3.3 元組的其他操作…………………… 644.4 字典…………………………………… 654.4.1 定義字典…………………………… 654.4.2 使用字典…………………………… 664.4.3 字典的其他操作…………………… 684.5 小結…………………………………… 744.6 知識拓展……………………………… 744.6.1 集合………………………………… 744.6.2 列表推導式、字典推導式和集合推導式……………………………… 77第5章 流程控制… …………………… 795.1 if判斷… ……………………………… 795.1.1 if語句… …………………………… 795.1.2 else語句… ………………………… 835.1.3 elif語句……………………………… 835.2 循環…………………………………… 855.2.1 while循環…………………………… 855.2.2 for循環……………………………… 865.2.3 break和continue語句… …………… 905.3 小結…………………………………… 915.4 知識拓展……………………………… 915.4.1 pass語句… ………………………… 915.4.2 循環語句中的else… ……………… 94第6章 函 數… ……………………… 976.1 函數的概念…………………………… 976.2 函數的定義…………………………… 976.3 函數參數……………………………… 986.3.1 必須參數…………………………… 996.3.2 關鍵字參數 ……………………… 1006.3.3 默認參數………………………… 1016.3.4 可變參數………………………… 1036.4 變量作用域………………………… 1066.4.1 局部變量………………………… 1066.4.2 全局變量………………………… 1086.5 函數返回值………………………… 1096.6 Lambda表達式… ………………… 1126.7 小結………………………………… 1146.8 知識拓展…………………………… 1146.8.1 文檔字符串……………………… 1146.8.2 內置函數………………………… 1166.8.3 函數注釋………………………… 117第7章 面向對象… …………………… 1197.1 面向對象介紹……………………… 1197.1.1 對象……………………………… 1217.1.2 類………………………………… 1237.2 Python與面向對象………………… 1237.2.1 介紹……………………………… 1247.2.2 定義語法………………………… 1247.2.3 類的使用………………………… 1257.2.4 類的構造方法…………………… 1257.2.5 類的屬性………………………… 1267.2.6 類中的方法……………………… 1277.2.7 私有屬性………………………… 1287.2.8 私有方法………………………… 1307.3 繼承和多態………………………… 1307.3.1 繼承……………………………… 1307.3.2 多態……………………………… 1357.3.3 鴨子類型………………………… 1387.4 小結………………………………… 1407.5 知識拓展…………………………… 1407.5.1 類變量和實例變量……………… 1407.5.2 靜態方法與類方法……………… 141第8章 錯誤和異! ………………… 1438.1 語法錯誤…………………………… 1438.2 異! 1448.3 處理異! 1468.4 拋出異! 1488.5 finally子句… ……………………… 1508.6 小結………………………………… 1518.7 知識拓展…………………………… 152自定義異常……………………………… 152第9章 模 塊… ……………………… 1549.1 介紹………………………………… 1549.2 模塊………………………………… 1549.2.1 模塊介紹………………………… 1549.2.2 __name__變量…………………… 1559.2.3 dir函數…………………………… 1569.2.4 使用模塊………………………… 1579.3 包…………………………………… 1589.3.1 使用包…………………………… 1589.3.2 包在多目錄中使用……………… 1599.4 標準庫……………………………… 1609.4.1 sys………………………………… 1609.4.2 os… ……………………………… 1669.4.3 math… …………………………… 1699.4.4 random… ………………………… 1729.5 安裝第三方庫……………………… 1759.5.1 Linux以及Mac OS平臺…………… 1759.5.2 Windows平臺… ………………… 1779.6 小結………………………………… 1789.7 知識拓展…………………………… 1799.7.1 globals和locals函數……………… 1799.7.2 pyc文件… ……………………… 1830章 文件與IO… ………………… 18410.1 打開文件… ……………………… 18410.1.1 文件模式… …………………… 18410.1.2 文件編碼… …………………… 18510.1.3 文件緩沖… …………………… 18610.2 文件基本操作… ………………… 18610.2.1 讀文件… ……………………… 18610.2.2 寫文件… ……………………… 18710.2.3 按行讀文件… ………………… 18810.2.4 按行寫文件… ………………… 18910.2.5 關閉文件… …………………… 19010.3 StringIO和BytesIO… …………… 19210.4 序列化與反序列化… …………… 19410.4.1 pickle模塊… …………………… 19410.4.2 JSON序列化與反序列化… …… 19710.5 小結… …………………………… 2001章 日期和時間………………… 20111.1 基本概念… ……………………… 20111.1.1 時間戳… ……………………… 20111.1.2 時間日期格式化符號… ……… 20211.1.3 時間元組… …………………… 20311.2 time模塊… ……………………… 20311.2.1 time函數………………………… 20311.2.2 localtime函數…………………… 20411.2.3 mktime函數… ………………… 20411.2.4 gmtime函數… ………………… 20511.2.5 asctime函數… ………………… 20611.2.6 ctime函數… …………………… 20611.2.7 sleep函數… …………………… 20711.2.8 clock函數… …………………… 20711.2.9 strftime函數… ………………… 20811.2.10 strptime函數…………………… 20911.3 datetime模塊……………………… 20911.3.1 date對象………………………… 20911.3.2 time對象………………………… 21211.3.3 datetime對象… ………………… 21311.3.4 timedelta對象…………………… 21611.3.5 tzinfo對象… …………………… 21711.4 calendar模塊……………………… 21811.5 小結… …………………………… 22211.6 知識拓展… ……………………… 22311.6.1 dateutil介紹… ………………… 22311.6.2 使用dateutil… ………………… 2232章 多線程與并行……………… 22712.1 線程和進程介紹… ……………… 22712.1.1 進程基本概念… ……………… 22712.1.2 線程基本概念… ……………… 22812.1.3 多線程基本概念… …………… 22812.1.4 Python與全局解釋器鎖………… 22912.2 Python線程模塊… ……………… 22912.2.1 _thread模塊… ………………… 22912.2.2 Threading.Thread… …………… 23312.2.3 線程同步… …………………… 23712.2.4 隊列… ………………………… 24112.3 Python進程模塊… ……………… 24412.3.1 os模塊…………………………… 24412.3.2 subprocess模塊… ……………… 24612.3.3 multiprocessing.Process… ……… 24912.4 小結… …………………………… 25312.5 知識拓展… ……………………… 25312.5.1 進程池… ……………………… 25312.5.2 線程池… ……………………… 2563章 正則表達式………………… 25913.1 正則表達式介紹… ……………… 25913.2 正則表達式語法… ……………… 26013.2.1 普通字符… …………………… 26013.2.2 字符轉義… …………………… 26213.2.3 元字符… ……………………… 26213.2.4 限定符… ……………………… 26313.2.5 定位符… ……………………… 26413.2.6 分組構造… …………………… 26513.2.7 匹配模式… …………………… 26513.3 re模塊… ………………………… 26613.3.1 re模塊介紹……………………… 26613.3.2 compile函數… ………………… 26713.3.3 match函數… …………………… 26713.3.4 re.search………………………… 26813.3.5 re.findall………………………… 26913.3.6 re.split…………………………… 26913.3.7 re.sub… ………………………… 27013.4 小結… …………………………… 27013.5 知識拓展… ……………………… 27113.5.1 re模塊的分組匹配……………… 27113.5.2 貪婪與非貪婪匹配… ………… 27213.5.3 零寬斷言… …………………… 27213.5.4 常用正則表達式參考… ……… 2734章 郵件處理…………………… 28214.1 電子郵件介紹… ………………… 28214.1.1 電子郵件簡介… ……………… 28214.1.2 電子郵件格式… ……………… 28214.1.3 電子郵件工作原理… ………… 28314.2 發送電子郵件… ………………… 28414.2.1 SMTP發送電子郵件… ………… 28414.2.2 發送HTML格式的電子郵件… … 28614.2.3 發送帶附件的郵件… ………… 28714.2.4 發送圖片… …………………… 28914.3 接收電子郵件… ………………… 29114.3.1 使用POP3協議下載郵件… …… 29114.3.2 使用IMAP協議下載郵件… …… 29314.3.3 解析郵件… …………………… 29414.4 小結… …………………………… 2965章 加密解密…………………… 29715.1 加密技術概述… ………………… 29715.1.1 加密技術介紹… ……………… 29715.1.2 對稱加密算法… ……………… 29915.1.3 非對稱加密算法… …………… 29915.1.4 數字簽名… …………………… 30015.2 Python加密技術… ……………… 30115.2.1 使用MD5加密… ……………… 30115.2.2 使用SHA加密… ……………… 30415.2.3 使用DES加密…………………… 30415.2.4 使用AES加密…………………… 30615.2.5 使用RSA加密…………………… 30815.3 加密技術使用場景… …………… 31115.3.1 密碼存儲… …………………… 31115.3.2 base64加密……………………… 31115.4 小結… …………………………… 31215.5 知識拓展… ……………………… 31215.5.1 密碼學之父… ………………… 31215.5.2 萬維網的發展… ……………… 31215.5.3 Hash在密碼學的應用… ……… 31315.5.4 加鹽算法… …………………… 3136章 網絡編程…………………… 31416.1 計算機網絡介紹… ……………… 31416.1.1 OSI七層模型…………………… 31416.1.2 TCP/IP協議介紹… …………… 31516.1.3 什么是IP地址?… …………… 31516.1.4 什么是子網掩碼?… ………… 31616.1.5 域名… ………………………… 31716.2 Python底層網絡模塊… ………… 31716.2.1 Socket簡介……………………… 31716.2.2 socket模塊……………………… 31816.2.3 socket對象方法………………… 31916.3 TCP編程… ……………………… 32116.3.1 客戶端… ……………………… 32116.3.2 服務端… ……………………… 32416.4 UDP編程… ……………………… 32616.5 urllib模塊… ……………………… 32816.5.1 GET請求………………………… 32816.5.2 POST請求… …………………… 33016.6 小結… …………………………… 33216.7 知識拓展… ……………………… 33216.7.1 requests模塊介紹… …………… 33216.7.2 requests模塊簡單使用… ……… 3337章 MySQL數據庫… …………… 33717.1 MySQL介紹… …………………… 33717.2 MySQL工具介紹… ……………… 33717.2.1 MySQL 控制臺客戶端… ……… 33717.2.2 MySQL Workbench軟件………… 33817.3 數據庫管理… …………………… 33817.3.1 創建數據庫… ………………… 33817.3.2 選擇數據庫… ………………… 33917.3.3 查看數據庫… ………………… 34017.3.4 修改數據庫… ………………… 34117.3.5 刪除數據庫… ………………… 34117.4 字段類型… ……………………… 34217.4.1 數值類型… …………………… 34217.4.2 字符串類型… ………………… 34317.4.3 時間類型… …………………… 34417.5 數據表操作… …………………… 34517.5.1 創建數據表… ………………… 34517.5.2 查看數據表… ………………… 34817.5.3 修改數據表… ………………… 35017.5.4 刪除數據表… ………………… 35317.6 數據庫語句… …………………… 35317.6.1 新增數據… …………………… 35317.6.2 查詢數據… …………………… 35417.6.3 修改數據… …………………… 35417.6.4 刪除數據… …………………… 35517.6.5 replace操作… ………………… 35517.7 數據表字符集… ………………… 35617.7.1 查看字符集… ………………… 35717.7.2 設置字符集… ………………… 35917.7.3 處理亂碼… …………………… 36017.8 數據庫索引… …………………… 36117.8.1 索引介紹… …………………… 36117.8.2 唯一索引… …………………… 36117.8.3 普通索引… …………………… 36217.9 小結… …………………………… 36317.10 知識拓展………………………… 36317.10.1 MySQL關鍵字… ……………… 36317.10.2 MySQL的發展歷程… ………… 3658章 Python操作MySQL………… 36718.1 Python數據庫API………………… 36718.1.1 DB-API介紹… ………………… 36718.1.2 模塊接口… …………………… 36718.1.3 錯誤和異! ………………… 36818.1.4 連接和游標對象… …………… 36918.1.5 類型… ………………………… 37218.2 數據庫操作… …………………… 37318.2.1 安裝模塊… …………………… 37318.2.2 連接數據庫… ………………… 37318.2.3 創建表… ……………………… 37418.2.4 插入數據… …………………… 37518.2.5 查詢數據… …………………… 37618.2.6 更新數據… …………………… 37718.2.7 刪除數據… …………………… 37918.3 事務… …………………………… 38018.4 小結… …………………………… 38218.5 知識拓展… ……………………… 38218.5.1 SQLAlchemy模塊介紹… ……… 38218.5.2 SQLAlchemy模塊簡單使用… … 3829章 使用Django創建Web站點…… 38519.1 常見的Web開發框架… ………… 38519.1.1 Python與Web…………………… 38519.1.2 Flask… ………………………… 38519.1.3 Tornado… ……………………… 38619.1.4 Django…………………………… 38719.1.5 Pyramid… ……………………… 38719.1.6 選擇合適的框架… …………… 38819.2 開發環境介紹… ………………… 38819.2.1 Django安裝……………………… 38819.2.2 創建Django項目………………… 38919.2.3 開發服務器… ………………… 39119.3 開始Django之旅… ……………… 39419.3.1 配置數據庫… ………………… 39419.3.2 生成Django應用………………… 39519.3.3 創建模型… …………………… 39719.3.4 管理站點… …………………… 39919.3.5 編輯視圖… …………………… 40319.3.6 使用模板… …………………… 40519.3.7 總結… ………………………… 40719.4 小結… …………………………… 40819.5 知識拓展… ……………………… 40819.5.1 WSGI介紹… …………………… 40819.5.2 實現一個簡單的WSGI接口… … 409