一般情况下,我们会用 Python 的交互式控制台来探索各种库和语言本身。有些读者可能对静态的需要编译的语言更熟悉,但是这些语言可能不会提供 REPL(read-eval-print loop,读取、求值、输出的循环)。在这里我想强调一下 Python 交互式控制台,也就是 REPL,作为一个学习工具的重要性。
doctest(https://docs.python.org/3/library/doctest.html)是 Python 的一个标准库,做测试用的。这个库通过模拟控制台对话来检验表达式求值是否正确,而本书中几乎所有代码的测试,包括那些在控制台里的输出,都是通过这个库来进行的。doctest 看起来就像是 Python 交互式控制台的剧本,你甚至都不需要了解它背后的运行机制就可以直接用它来试验书里的例子。
我有时为了事先说明一段代码的目的,会在展示代码之前先摆出相应的 doctest 文本。这是因为我认为,在考虑如何实现一个功能之前,先严格地列出这个功能能做什么,这能帮助我们在编程时把精力花在该花的地方。测试驱动开发(TDD)的精髓就是先写测试,我后来发现这种精神在教学中也是大有益处的。如果你对 doctest 还不熟悉,花点时间阅读它的文档(https://docs.python.org/3/library/doctest.html)。结合本书的源码(https://github.com/fluentpython/example-code),你可以在操作系统的控制台里键入 python3 -m doctest example_script.py 来验证书中几乎所有代码的正确性。