在 Python 2 中,我们可以重新分配True和False(但不能None),但所有三个(True、、False和None)都被认为是内置变量。但是,在 Py3k 中,所有三个都根据文档更改为关键字。
根据我自己的猜测,我只能猜测是为了防止这种旧恶作剧的True, False = False, True恶作剧。然而,在 Python 2.7.5 中,也许在之前的版本中,诸如None = 3which reassigned之类的语句None引发了SyntaxError: cannot assign to None.
从语义上讲,我不相信True,False和None是关键字,因为它们最终是语义文字,这就是 Java 所做的。我检查了 PEP 0(索引),但找不到 PEP 来解释它们被更改的原因。
是否有性能优势或其他原因使它们成为关键字而不是文字或像Nonepython2 中的特殊情况?