前 言 本书内容以网络应用程序开发为主,重点介绍多线程/ 多进程编程、基于TCP/UDP/ SSL 等网络协议的套接字编程、端口扫描与数据包嗅探、网络爬虫开发和电子邮件客户端 编程,没有详细讲解Python 语言的基础语法,只是在第1 章简单介绍了一下,然后通过 后面4 章的大量例题演示了它们的应用。 在阅读和学习时需要注意以下几点。 (1)至少把书从头到尾认真阅读三遍以上,重点章节要超过五遍甚至更多,不要以为 把书买回来或发到手以后写上自己的名字就学会了。 (2)至少把书中的演示性代码和例题代码亲自输入一遍,然后修改、调试、运行三遍 以上,一定要自己对着书敲代码,即使有源码文件也不要拿来直接运行,避免一看就会一 写就错。 (3)有意识地练习技术拆分和集成的能力,多思考每个案例的知识点能解决什么问题, 不同案例中的技术组合之后能够解决什么问题,理解和熟练掌握书中代码之后,尝试做一 些修改、集成和二次开发实现实际生活和工作中的更多功能,这样会提高得更快。 (4)学习书中案例和代码时遇到不懂的地方要多查阅官方文档,多进行验证,做一些 必要的笔记作为补充,直接记在书中空白处即可,没必要用专门的笔记本。 (5)如果学习或开发过程中遇到确实无法解决的问题而不得不求助于别人时,一定要 准确描述问题并提供代码、数据和完整的出错界面截图,避免只使用文字描述问题,不要 简单地说一句“我的程序运行出错了,怎么办啊?”,更不要给别人出简答题,要懂得尊 重别人的时间。一定要记住,你提供的信息越详细、越准确,获得有效帮助并快速解决问 题的可能性就越大。举手之劳很少有人会拒绝,但是如果需要花费大量时间猜你到底问的 是什么,需要为了解决这个问题专门搭建环境安装扩展库,需要照着你的代码截图自己敲 一遍,需要花大量时间设计测试数据,并且根据你提供的几行代码片段甚至压缩到不能再 少的几行出错提示推测代码是什么样子以及为什么出错和怎么修改,说实话,难! (6)任何语言都是实现某个算法或解决某个问题的工具,工具固然很重要,但解决问 题的方法和相关理论等专业知识才是根本。尽管书中对每个案例用到的理论知识都做了必 要的解释,但仍以Python 语言的实现为主,并且假设读者对操作系统、计算机网络的内 容有一定程度的了解。如果您阅读本书时感觉吃力,很大可能是对相关的理论、协议不够 了解,这时应该找几本专业书籍阅读,而不是再去多读几本Python 语言基础的书。 (7)学会学习比学习知识更重要。本书开始动笔时刚刚有Python 3.8.0 ,写完时 已经更新到了3.8.7,Python 3.9.1 已经发行了一段时间,并且已经发布了Python 3.10.0a5 ,估计大家看到这本书的时候最新版本至少是Python 3.10.0 了,几乎所有 扩展库也会保持同样的更新速度。虽然Python 语言的版本更新速度很快,但好处在于向 下兼容(本书只考虑Python 3.x),本书所涉及的基础语法和标准库的内容完全可以在 新版本中使用(但不建议过于追求使用最新版本,升级之前一定要慎重考虑和充分调研)。 扩展库就不一定了,在版本升级时很多用法会发生改变,使用低版本扩展库编写的代码在 升级扩展库之后无法运行是很常见的事情。所以,学习书中的知识是一方面,更重要的是 体会和理解这些知识,掌握学习方法和调试代码的方法,升级到新版本后能够以最短的时 间熟悉并运用新特性。 本书为任课教师提供教学大纲、课件、源码、习题答案、考试系统等教学资源,部分 知识点和案例还提供了相应的微课视频,可以直接扫描二维码观看。任课教师可以通过清 华大学出版社官方渠道获取这些资源,也可以通过图书封底所写的作者的微信公众号直接 联系作者反馈问题和交流,还可以通过公众号阅读超过1200 篇原创技术文章作为本书的 扩展和补充。 董付国 2021 年2 月