目录 第1ç« åˆè¯†Python 1 1.1 Python概述 1 1.1.1 Pythonèµ·æº 2 1.1.2 Python版本 2 1.1.3 Python应用 3 1.2 æå»ºPythonå¼€å‘环境 4 1.2.1 下载Python 4 1.2.2 安装Python 4 1.2.3 å¯åЍPython 6 1.2.4 多版本PythonåŠè™šæ‹ŸçŽ¯å¢ƒçš„å®‰è£… 7 1.3 Pythonå¼€å‘环境的使用 10 1.3.1 使用自带的IDLE 11 1.3.2 常用的第三方开å‘工具 11 1.3.3 官网交互å¼çŽ¯å¢ƒ 11 1.4 åˆå¦è€…常è§çš„问题 12 1.4.1 为什么æç¤ºâ€œpython䏿˜¯å†…部或外部命令……†12 1.4.2 如何在Python交互模å¼ä¸‹è¿è¡Œ.py文件 13 1.5ã€€æœ¬ç« å®žæˆ˜ 13 1.5.1 IDLE的简å•使用 13 1.5.2 pip工具的使用 15 1.5.3 åˆå§‹åŒ–环境 16 1.6ã€€æœ¬ç« å°ç»“ 16 1.7 æ€è€ƒä¸Žç»ƒä¹ 16 第2ç« Pythonè¯è¨€åŸºç¡€ 17 2.1 Pythonè¯æ³•特点 17 2.1.1 注释 18 2.1.2 代ç 规范 20 2.2ã€€æ ‡è¯†ç¬¦ä¸Žä¿ç•™å— 22 2.2.1ã€€æ ‡è¯†ç¬¦ 22 2.2.2 ä¿ç•™å— 23 2.3 使用å˜é‡ 24 2.3.1 å˜é‡çš„定义 24 2.3.2 å˜é‡çš„类型 25 2.4 基本数æ®ç±»åž‹ 25 2.4.1 数å—类型 25 2.4.2 å—符串类型 27 2.4.3 布尔类型 29 2.4.4 数æ®ç±»åž‹è½¬æ¢ 29 2.5 è¿ç®—符 30 2.5.1 算术è¿ç®—符 30 2.5.2 比较è¿ç®—符 32 2.5.3 赋值è¿ç®—符 32 2.5.4 逻辑è¿ç®—符 34 2.5.5 ä½è¿ç®—符 34 2.5.6 æˆå‘˜è¿ç®—符 35 2.5.7 身份è¿ç®—符 36 2.5.8 è¿ç®—符的优先级 36 2.6 基本输入输出 38 2.6.1 使用input()函数输入 38 2.6.2 使用print()函数输出 38 2.7ã€€æœ¬ç« å®žæˆ˜ 39 2.7.1 求和 39 2.7.2ã€€æ±‚å¹³æ–¹æ ¹ 40 2.7.3 求水仙花数 41 2.7.4 判æ–ç´ æ•° 42 2.8ã€€æœ¬ç« å°ç»“ 43 2.9 æ€è€ƒä¸Žç»ƒä¹ 44 第3ç« å—符与åºåˆ— 45 3.1 å—ç¬¦ä¸²çš„å¸¸è§æ“作 46 3.1.1 å—符串长度的计算 47 3.1.2ã€€å—æ¯çš„大å°å†™è½¬æ¢ 47 3.1.3 å—符串的分隔 48 3.1.4 å—符串的拼接 49 3.1.5 å—符串查找 52 3.1.6 å—ç¬¦ä¸²æ›¿æ¢ 52 3.1.7 统计å—符出现的次数 53 3.1.8 去除å—符串ä¸çš„ç©ºæ ¼å’Œç‰¹æ®Šå—符 53 3.1.9ã€€æ ¼å¼åŒ–å—符串 54 3.1.10 encode()å’Œdecode()方法 55 3.2 åºåˆ— 56 3.2.1 索引 56 3.2.2 切片 57 3.2.3 åºåˆ—ç›¸åŠ 58 3.2.4 åºåˆ—相乘 59 3.2.5 检查æŸä¸ªå…ƒç´ æ˜¯å¦æ˜¯åºåˆ—çš„æˆå‘˜ 59 3.2.6 计算åºåˆ—çš„é•¿åº¦ã€æœ€å¤§å€¼å’Œæœ€å°å€¼ 60 3.3 列表åºåˆ— 60 3.3.1ã€€åˆ é™¤åˆ—è¡¨å…ƒç´ 61 3.3.2ã€€è®¿é—®åˆ—è¡¨å…ƒç´ 62 3.3.3 更新与扩展列表 62 3.3.4ã€€å¯¹åˆ—è¡¨å…ƒç´ è¿›è¡Œç»Ÿè®¡ 63 3.3.5ã€€å¯¹åˆ—è¡¨è¿›è¡ŒæŽ’åº 64 3.3.6ã€€åˆ—è¡¨æŽ¨å¯¼å¼ 65 3.4 元组 67 3.4.1 元组的创建 67 3.4.2ã€€è®¿é—®å…ƒç»„å…ƒç´ 69 3.4.3 连接元组 69 3.4.4ã€€åˆ é™¤å…ƒç»„ 69 3.4.5 元组的è¿ç®—符 70 3.4.6 生æˆå™¨ 70 3.4.7 元组与列表的区别 71 3.5 å—å…¸ 72 3.5.1 å—典的创建 72 3.5.2 访问å—å…¸ 72 3.5.3 修改å—å…¸ 73 3.5.4ã€€åˆ é™¤å—å…¸å…ƒç´ 73 3.5.5 å—典的内置方法 73 3.5.6 å—典的é历 74 3.6ã€€é›†åˆ 75 3.6.1 集åˆçš„创建 75 3.6.2 集åˆçš„å¸¸è§æ“作 76 3.6.3 集åˆçš„内置方法 78 3.7ã€€æœ¬ç« å®žæˆ˜ 79 3.8ã€€æœ¬ç« å°ç»“ 80 3.9 æ€è€ƒä¸Žç»ƒä¹ 81 第4ç« æµç¨‹æŽ§åˆ¶è¯å¥ 83 4.1 分支结构 83 4.1.1 å•分支if结构 83 4.1.2 åŒåˆ†æ”¯if…else结构 84 4.1.3 多分支if…elif…else结构 84 4.2 循环结构 85 4.2.1 while循环 85 4.2.2 whileæ»å¾ªçޝ 86 4.2.3 while…elseè¯å¥ 86 4.2.4 for循环 87 4.2.5 循环控制è¯å¥ 87 4.2.6 循环嵌套 88 4.3ã€€æœ¬ç« å®žæˆ˜ 89 4.3.1 判æ–é—°å¹´ 89 4.3.2 使用snaps库制作数å—闹钟 90 4.4ã€€æœ¬ç« å°ç»“ 90 4.5 æ€è€ƒä¸Žç»ƒä¹ 90 第5ç« æ£åˆ™è¡¨è¾¾å¼ 92 5.1 认识æ£åˆ™è¡¨è¾¾å¼ 92 5.1.1 元å—符 93 5.1.2 预定义å—符 93 5.1.3 特殊分组用法 94 5.2 re模å—ä¸çš„常用功能函数 95 5.2.1 re.compile函数 95 5.2.2 re.match函数 95 5.2.3 re.search函数 96 5.2.4 re.findall函数 97 5.2.5 re.finditer函数 97 5.2.6 re.split函数 98 5.2.7 re.sub函数 98 5.2.8 re.subn函数 99 5.2.9 注æ„事项 99 5.3ã€€æœ¬ç« å®žæˆ˜ 100 5.4ã€€æœ¬ç« å°ç»“ 102 5.5 æ€è€ƒä¸Žç»ƒä¹ 102 第6ç« å‡½æ•° 103 6.1 函数的创建和调用 103 6.1.1 创建函数 103 6.1.2 调用函数 104 6.2ã€€å‚æ•°ä¼ 递 106 6.2.1 ä¸å¯å˜ç±»åž‹å‚æ•°å’Œå¯å˜ç±»åž‹å‚æ•° 106 6.2.2ã€€å‚æ•°å½¢å¼ 107 6.3 返回值 111 6.3.1 returnè¯å¥ 111 6.3.2 返回多个值 111 6.4 å˜é‡çš„作用域 112 6.4.1 全局å˜é‡å’Œå±€éƒ¨å˜é‡ 113 6.4.2 globalå’Œnonlocalå…³é”®å— 113 6.5 匿å函数(lambda) 114 6.6 Collatzåºåˆ— 115 6.7ã€€æœ¬ç« å°ç»“ 116 6.8 æ€è€ƒä¸Žç»ƒä¹ 116 第7ç« é¢å‘对象编程 117 7.1 é¢å‘对象编程概述 117 7.1.1 é¢å‘对象编程ä¸çš„æœ¯è¯ä»‹ç» 118 7.1.2 类的定义 118 7.1.3 类的使用 119 7.1.4 类的方法 120 7.2 深入介ç»ç±» 120 7.2.1ã€€ç±»çš„æž„é€ æ–¹æ³• 121 7.2.2 类的访问æƒé™ 124 7.3 å°è£… 129 7.4ã€€ç»§æ‰¿ä¸Žå¤šæ€ 132 7.4.1 类的å•继承 132 7.4.2 类的多继承 133 7.4.3ã€€æž„é€ å‡½æ•°çš„ç»§æ‰¿ 134 7.4.4 方法é‡å†™ 135 7.4.5ã€€ç»§æ‰¿ä¸‹çš„å¤šæ€ 135 7.5 类的专有方法 138 7.6ã€€æœ¬ç« å®žæˆ˜ 144 7.7ã€€æœ¬ç« å°ç»“ 145 7.8 æ€è€ƒä¸Žç»ƒä¹ 146 第8ç« æ¨¡å— 148 8.1ã€€æ¨¡å— 148 8.1.1ã€€æ ‡å‡†æ¨¡å— 149 8.1.2 importè¯å¥ 149 8.1.3 æœç´¢è·¯å¾„ 150 8.1.4 from…importè¯å¥ 151 8.1.5ã€€åˆ›å»ºæ¨¡å— 152 8.1.6ã€€å®‰è£…ç¬¬ä¸‰æ–¹æ¨¡å— 152 8.2 模å—的高级技术 153 8.2.1 __name__属性 153 8.2.2 dir函数 154 8.3 Pythonä¸çš„包 155 8.3.1 包的定义 155 8.3.2 包的导入 155 8.3.3 包的组织 156 8.4ã€€å¸¸ç”¨çš„å†…ç½®æ¨¡å— 156 8.4.1 collections 156 8.4.2 base64 159 8.4.3 struct 160 8.4.4 hashlib 161 8.4.5 itertools 163 8.4.6 XML 164 8.4.7 HTMLParser 166 8.5ã€€æœ¬ç« å®žæˆ˜ 166 8.5.1ã€€åˆ›å»ºæ¨¡å— 166 8.5.2ã€€å®‰è£…æ¨¡å— 170 8.6ã€€æœ¬ç« å°ç»“ 171 8.7 æ€è€ƒä¸Žç»ƒä¹ 171 第9ç« å¼‚å¸¸å¤„ç†å’Œç¨‹åºè°ƒè¯• 172 9.1 异常 173 9.1.1 错误与异常的概念 173 9.1.2 Python内置异常 173 9.1.3 requests模å—的相关异常 175 9.1.4 用户自定义异常 176 9.2ã€€å¼‚å¸¸å¤„ç† 176 9.2.1 æ•获所有异常 177 9.2.2 æ•获指定异常 177 9.2.3 æ•获多个异常 178 9.2.4 异常ä¸çš„else 178 9.2.5 异常ä¸çš„finally 178 9.2.6 使用raiseè¯å¥ä¸»åŠ¨æŠ›å‡ºå¼‚å¸¸ 179 9.2.7 使用tracebackæ¨¡å—æŸ¥çœ‹å¼‚常 180 9.3 程åºè°ƒè¯• 181 9.3.1 调试 181 9.3.2 æ–言 182 9.3.3 logging 183 9.3.4 pdb 183 9.3.5 pdb.set_trace() 185 9.3.6 IDE 186 9.4 å•元测试 186 9.4.1 å•元测试概述 186 9.4.2 è¿è¡Œå•元测试 188 9.4.3 setUp()与tearDown()方法 188 9.5 文档测试 189 9.6ã€€æœ¬ç« å°ç»“ 191 9.7 æ€è€ƒä¸Žç»ƒä¹ 191 第10ç« ç›®å½•å’Œæ–‡ä»¶æ“作 192 10.1 基本文件æ“作 192 10.1.1ã€€æ‰“å¼€å’Œå…³é—æ–‡ä»¶ 192 10.1.2ã€€æ–‡ä»¶æ¨¡å¼ 194 10.1.3 缓冲 195 10.2 基本文件方法 196 10.2.1 读和写 196 10.2.2 é‡å‘½å 200 10.2.3 åºåˆ—化和ååºåˆ—化 201 10.3 目录æ“作 206 10.3.1 路径 207 10.3.2 目录内容 209 10.3.3ã€€èŽ·å–æ–‡ä»¶ä¿¡æ¯ 210 10.3.4 é‡å‘½åã€ç§»åЍã€å¤åˆ¶å’Œåˆ 除文件 211 10.3.5ã€€åˆ›å»ºå’Œåˆ é™¤ç›®å½• 211 10.3.6 文件通é…符 212 10.4ã€€è½®æ¢æ–‡ä»¶ 213 10.5ã€€æœ¬ç« å°ç»“ 214 10.6 æ€è€ƒä¸Žç»ƒä¹ 215 第11ç« å¤šçº¿ç¨‹ç¼–ç¨‹ 216 11.1 进程和线程 216 11.1.1 进程 216 11.1.2 线程 217 11.1.3 多进程和多线程 217 11.2 使用线程 218 11.2.1ã€€å…¨å±€è§£é‡Šå™¨é” 218 11.2.2 退出线程 219 11.2.3 Pythonçš„çº¿ç¨‹æ¨¡å— 219 11.3 _threadæ¨¡å— 219 11.4 threadingæ¨¡å— 222 11.4.1 守护线程 222 11.4.2 Thread对象 223 11.5ã€€çº¿ç¨‹åŒæ¥ 227 11.6 Queueæ¨¡å— 229 11.7 线程与进程的比较 230 11.7.1ã€€çº¿ç¨‹åˆ‡æ¢ 231 11.7.2 计算密集型与IO密集型 231 11.7.3 异æ¥IO 232 11.8ã€€æœ¬ç« å®žæˆ˜ 232 11.8.1ã€€æ–æ³¢é‚£å¥‘数列ã€é˜¶ä¹˜å’ŒåŠ å’Œ 232 11.8.2 使用队列解决生产者/消费者模型 234 11.8.3 å进程的使用 235 11.8.4ã€€è¿›ç¨‹æ± çš„ä½¿ç”¨ 236 11.8.5 多个å进程间的通信 237 11.9ã€€æœ¬ç« å°ç»“ 238 11.10 æ€è€ƒä¸Žç»ƒä¹ 239 第12ç« æ•°æ®åº“编程 240 12.1 使用dbm创建æŒä¹…å—å…¸ 241 12.1.1 选择dbmæ¨¡å— 241 12.1.2 创建æŒä¹…å—å…¸ 241 12.1.3 访问æŒä¹…å—å…¸ 242 12.1.4 dbm与关系数æ®åº“çš„é€‚ç”¨åœºåˆ 244 12.2 关系数æ®åº“与SQL 244 12.2.1 SQLè¯è¨€ 245 12.2.2 创建数æ®åº“ 247 12.2.3 定义表 248 12.3 使用Pythonçš„DB API 249 12.3.1 下载DB APIæ¨¡å— 249 12.3.2 创建连接 249 12.3.3 数æ®åº“çš„CRUDæ“作 250 12.3.4 使用事务并æäº¤ç»“æžœ 255 12.3.5 检查模å—çš„åŠŸèƒ½å’Œå…ƒæ•°æ® 256 12.3.6 处ç†é”™è¯¯ 256 12.4 使用mysql-connector 257 12.4.1 连接MySQLæ•°æ®åº“ 257 12.4.2 创建数æ®åº“ 258 12.4.3 创建数æ®è¡¨ 258 12.4.4 主键设置 259 12.4.5 æ’å…¥æ•°æ® 260 12.4.6ã€€æŸ¥è¯¢æ•°æ® 261 12.4.7 whereæ¡ä»¶è¯å¥ 262 12.4.8ã€€æŽ’åº 263 12.4.9 limitè¯å¥ 264 12.4.10ã€€åˆ é™¤è®°å½• 265 12.4.11ã€€æ›´æ–°æ•°æ® 265 12.4.12ã€€åˆ é™¤æ•°æ®è¡¨ 266 12.5ã€€æœ¬ç« å°ç»“ 267 12.6 æ€è€ƒå’Œç»ƒä¹ 267 第13ç« ç½‘ç»œç¼–ç¨‹ 270 13.1 网络编程概述 270 13.2 TCP/IP简介 271 13.2.1 TCP/IPåè®®æ—æ¦‚è¿° 271 13.2.2 应用层 271 13.2.3ã€€ä¼ è¾“å±‚ 274 13.2.4 网络层 275 13.2.5 IP地å€ä¸Žç«¯å£ 276 13.3 å‘é€ç”µå邮件 277 13.3.1 使用Pythonå‘é€é‚®ä»¶ 277 13.3.2 使用Pythonå‘é€HTMLæ ¼å¼çš„邮件 279 13.3.3 使用Pythonå‘é€å¸¦é™„件的邮件 280 13.3.4 在HTMLæ–‡æœ¬ä¸æ·»åŠ å›¾ç‰‡ 281 13.3.5 使用第三方SMTPæœåŠ¡å‘é€é‚®ä»¶ 282 13.4 接收Internet邮件 283 13.4.1 通过POP3下载邮件 283 13.4.2 解æžé‚®ä»¶ 284 13.5 套接å—编程 286 13.5.1 TCP编程 286 13.5.2 UDP编程 290 13.6ã€€æœ¬ç« å°ç»“ 291 13.7 æ€è€ƒå’Œç»ƒä¹ 291 第14ç« Django与投票管ç†ç³»ç»Ÿ 292 14.1 Web框架的功能 293 14.1.1 Web框架的基本功能 293 14.1.2 Web框架的其他通用功能 293 14.2 Django框架的安装 294 14.2.1 Django框架的特点 294 14.2.2 Django框架的版本 294 14.2.3 在Windows下安装Django 295 14.3 使用Django框架 296 14.3.1 创建pyqi项目 296 14.3.2 创建投票应用polls 298 14.3.3 项目的目录结构 299 14.3.4ã€€åˆæ¥é…置视图和urls 299 14.4 为pyqi项目创建数æ®åº“ 301 14.4.1 为pyqi项目é…置数æ®åº“ 301 14.4.2 为polls应用创建模型 302 14.4.3 为polls应用激活模型 303 14.4.4 测试生æˆçš„æ¨¡åž‹API 305 14.4.5 使用Django管ç†ç•Œé¢ 307 14.5 完善投票应用的视图 310 14.5.1 编写视图 311 14.5.2ã€€ä¸ºè§†å›¾æ·»åŠ æ¨¡æ¿ 312 14.5.3ã€€æ¸²æŸ“æ¨¡æ¿ 313 14.5.4 抛出Http404异常 314 14.5.5 get_object_or_404() 314 14.5.6ã€€ä¸ºæŠ•ç¥¨åº”ç”¨ä½¿ç”¨æ¨¡æ¿ 315 14.5.7 为URLåç§°æ·»åŠ å称空间 315 14.6ã€€ä¸ºæŠ•ç¥¨åº”ç”¨å®šåˆ¶è¡¨å• 316 14.6.1ã€€ç¼–å†™è¡¨å• 316 14.6.2 通用视图 318 14.7ã€€ç®¡ç†æŠ•ç¥¨åº”ç”¨çš„é™æ€èµ„æº 320 14.7.1 自定义应用界é¢å’Œé£Žæ ¼ 320 14.7.2 管ç†é™æ€èµ„æº 320 14.8 完善投票管ç†åŽå° 321 14.8.1 修改åŽå°è¡¨å• 321 14.8.2ã€€ä¿®æ”¹å—æ®µåˆ—表 325 14.8.3 更改åŽå°ç•Œé¢å’Œé£Žæ ¼ 326 14.9 打包和å‘布投票系统 328 14.9.1 é‡ç”¨çš„é‡è¦æ€§ 328 14.9.2 打包项目和应用 328 14.9.3 安装和å¸è½½è‡ªå®šä¹‰åŒ… 331 14.9.4 å‘布包 332 14.10ã€€æœ¬ç« å°ç»“ 332 14.11 æ€è€ƒä¸Žç»ƒä¹ 332 å‚考文献 333