True和False不是关键字——它们是实际的对象。您可以在Python解释器中验证这一点(此处使用2.7,但在3.x中同样适用):Python 2.7.6 (default, Jan 29 2014, 21:22:07)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> type(True)
>>> True.__class__.__name__
'bool'
>>> type(False)
>>> False.__class__.__name__
'bool'
>>> hash(True)
1
>>> hash(False)
0
>>> True.__hash__
>>> False.__hash__
因此它们可以用作dict或类似结构中的键。
实际上,在Python 3之前,可以使用True和False作为dict()的参数名:>>> d = dict(True="true", False="false")
>>> d
{'False': 'false', 'True': 'true'}
然而,为了避免混淆,Python3解释器禁止您这样做,因为它现在基本上将它们视为关键字——但实际上,它们仍然是对象。(我想你可以说他们两个都是,差不多吧。)