《Python基础教程》笔记 第24章 项目5:虚拟茶话会
在这个项目中,我们将做些正式的网络编程。我们将编写一个聊天服务器,让人们能够通过网络实时聊天。使用Python创建这种程序的方式有很多。在本章中,将使用标准库中的异步网络模块。 值得注意的是,本章使用的asyncore和asynchat模块已在Python 3.6中弃用、在3.12中移除。如果愿意,可以尝试使用第14章讨论的其他方法(例如分叉或线程),甚至使用新的asyncio模块重写这个...
在这个项目中,我们将做些正式的网络编程。我们将编写一个聊天服务器,让人们能够通过网络实时聊天。使用Python创建这种程序的方式有很多。在本章中,将使用标准库中的异步网络模块。 值得注意的是,本章使用的asyncore和asynchat模块已在Python 3.6中弃用、在3.12中移除。如果愿意,可以尝试使用第14章讨论的其他方法(例如分叉或线程),甚至使用新的asyncio模块重写这个...
互联网上充斥着各种形式的新闻源,包括报纸、视频频道、博客、播客等等。有些新闻源还提供诸如RSS或Atom feed等服务,让你使用相对简单的代码就能获取最新的新闻,而无需对网页进行解析。在这个项目中,我们将探索一种比Web更早面世的机制:网络新闻传输协议(Network News Transfer Protocol, NNTP)。我们将从一个没有任何抽象(没有函数、没有类)的原型到一个添加了...
在C++多线程环境下,全局变量、局部变量、静态变量和thread_local变量的区别如下: 全局变量 局部变量 静态变量 thread_local变量 存储期 程序运行期间 函数调用期间 程序运行期间 线程运行期间 ...
这个项目的目标是根据描述各种网页和目录的单个XML文件生成完整的网站。 有关XML的简洁描述,参见W3C网站的文章 “XML in 10 points” 。XML的详尽教程可以在W3Schools网站(https://www.w3schools.com/xml/)上找到。有关SAX的详细信息,参见官网(http://www.saxproject.org/)。 22.1 问题描述 在这个项...
本章介绍如何使用Python创建图形。具体地说,你将创建一个PDF文件,其中包含的图表对从文本文件读取的数据进行可视化。 21.1 问题描述 Python很善于分析数据。俗话说,一图胜千言(A picture is worth a thousand words)。在本章中,你将学习ReportLab包的基本知识,它让你能够像创建文本文件一样轻松地创建PDF格式(和其他格式)的图形和文档。 ...
本章介绍如何使用Python杰出的文本处理功能将纯文本文件转换为用HTML或XML等语言标记(mark up)的文件。如果需要HTML简介,网上的相关教程数不胜数,例如Getting started with HTML。 20.1 问题描述 你希望给纯文本文件添加格式。假设你要将一个文件用作网页,而给你文件的人嫌麻烦,没有以HTML格式编写它。你不想手动添加需要的所有标签,而是想编写一个程...
在接下来的10章中,你将把新学到的技能付诸应用。每章都包含一个DIY项目,既介绍了实现解决方案所需的工具,同时又提供了很大的实验空间。 本章将介绍一些通用的Python编程指南。 19.1 为何要有趣 Python的优点之一是让编程变得有趣。当你感到有趣时,就更容易变得高效;而Python有趣的地方之一就是让你非常高效。这就形成了生活中很难得的良性循环。 19.2 编程柔术 柔术(ju...
程序准备发布时,你可能想先将其打包。Setuptools和较旧的Distutils都是用于发布Python包的工具,让你能够用Python轻松地编写安装脚本。这些脚本可用于构建可发布的归档文件,供用户来编译和安装你编写的库。 18.1 Setuptools基础 Python打包用户指南(https://packaging.python.org/)和Setuptools官网(https://...
Python可以实现任何东西。这门语言功能强大,但有时候速度又太慢。Python的目标是易于使用以及帮助提高开发速度,这种灵活性是以牺牲效率为代价的。对于大多数常见的编程任务来说,Python当然足够快。但如果真的很在意速度,C、C++、Java和Julia等语言通常要快好几个数量级。 17.1 两全其美 虽然只使用C语言能提高程序本身的速度,但肯定会降低编程速度。因此你需要考虑哪一点更重...
本章介绍测试的基本知识,告诉你如何养成在编程中进行测试的习惯,并介绍一些编写测试的有用工具。 16.1 先测试,后编码 为了计划改变和灵活性,为程序的各个部分编写测试(所谓的单元测试(unit test))非常重要。极限编程(Extreme Programming)的那群人引入了非常有用、但有些违反直觉的格言“测试一点,编码一点”,而不是直观的“编码一点,测试一点”。换句话说,先测试,后编...