写给程序员的Python教程
上QQ阅读APP看书,第一时间看更新

本书中的代码示例以以下字体显示:

>>> def square(x):
...     return x * x
...

一些实例代码保存在文件中,其他的例如上面的代码来自于交互式Python会话。在这种交互的情况下,我们会包含Python会话中的提示,如三箭头>>>和三点…提示。你不需要键入这些箭头或点。同样,对于操作系统的shell命令,在Linux、macOS、类UNIX系统以及一些对于手头的任务不重要的特定操作系统上,我们将使用一个提示符$(字体原因,导致全书字形有异):

$ python3 words.py

在这种情况下,你无须输入$字符。

对于特定的Windows命令,我们将在最前面使用一个大于号提示:

> python words.py

同样,这里不需要输入>字符。对于需要放置在文件中,而不是以交互方式输入的代码块,我们将不加任何前置提示,直接显示代码:

def write_sequence(filename, num):
    """将Recaman序列写入文本文件"""
    with open(filename, mode='wt', encoding='utf-8') as f:
        f.writelines("{0}\n".format(r)
            for r in islice(sequence(), num + 1))

我们努力确保书中的代码行足够短,以便每个逻辑代码行对应于书中的单一实体代码行。然而,发布到不同设备上的电子书的格式可能变幻莫测,并且偶尔的长行代码也是有必要的,这意味着我们不能保证代码不换行。

>>> print("This is a single line of code which is very long. Too long, in fact, to fit on a single physical line of code in the book.")

如果在上面引用的字符串中的行末尾看到一个反斜杠,它不是代码的一部分,不应该输入。

偶尔,我们也会为代码行编号,便于我们可以从下面的叙述中轻松地引用它们。这些行号不应作为代码的一部分输入。编号的代码块如下所示:

01.  def write_grayscale(filename, pixels):
02.      height = len(pixels)
03.      width = len(pixels[0])
04. 
05.      with open(filename, 'wb') as bmp:
06.          # BMP文件头
07.          bmp.write(b'BM')
08.          # 接下来的4个字节将作为32位的小端整数保存文件大小
09.          # 现在用零占位
10.          size_bookmark = bmp.tell()
11.          bmp.write(b'\x00\x00\x00\x00')

有时候,我们需要展示不完整的代码段。向现有代码块添加代码,或者说想让代码块的结构更清晰而不重复代码块中的所有存在的内容时,可以展示不完整的代码段。在这种情况下,我们使用#...的Python注释来表示省略的代码:

class Flight:
    # ...
    def make_boarding_cards(self, card_printer):
        for passenger, seat in sorted(self._passenger_seats()):
            card_printer(passenger, seat, self.number(),
                self.aircraft_model())

这意味着在make_boarding_cards()函数之前,Flight类块中已经存在一些其他的代码了。

最后,在本书中,我们将使用带有空括号的标识符来引用一个函数的标识符,就像前面段落中引用make_boarding_cards()一样。