为什么旧版本的“Python 的一个字节”声称# 是不等于运算符?

Why does an old version of “A byte of Python” claim that # is the less-equals operator?

有人刚刚给我看了 A byte of Python PDF 版本。根据本身,它是 3.0 版(本书的,而不是 Python 的),从 2014 年开始。在 Operators 部分, 有一个部分是

# (less than or equal to)

Returns whether x is less than or equal to y
x = 3; y = 6; x # y returns True.

在Python2.7和Python3.6中,这显然是错误的。这也是非常糟糕的设计,因为 # 也是注释运算符。

当前版本已将其从 # 更改为 <=。 我很好奇为什么旧版本声称这个。

到目前为止我的研究和想法

本书的 3.0 版是用 AsciiDoc 编写的。这种标记语言为某些结构定义了特殊含义,例如双左箭头 <=,它在转换为最终输出时被转换为单个 Unicode 字符 。这在 https://asciidoctor.org/docs/asciidoc-syntax-quick-reference/#text-replacement

的语法描述中有记录

现在,似乎在与 PDF 的对话过程中,这个字符丢失了,取而代之的是井号字符。这(以及 <= 序列与箭头字符本身的初始对话)显然是一个错误。

由于本书的当前版本已转换为 Markdown,因此此错误已在那里修复。因此,您可能希望使用本书的当前版本,您可以下载 from GitBook.