2017-06-15 86 views
0

在Python 3中,您不能分配到True,FalseNone。但是,至少在CPython上,您可以指定NotImplemented为什么你可以分配给NotImplemented?

>>> False 
False 
>>> False = 42 
SyntaxError: can't assign to keyword                  ' 
>>> NotImplemented 
NotImplemented 
>>> NotImplemented = 42 
>>> NotImplemented 
42 

这是什么原因?

回答

0

Python常量enumerated here不是“常量”(它们可以重新分配),除非明确指出:“对X的赋值是非法的并引发SyntaxError。”它们是:False,True,None__debug__。这明确地在一份报告中指出:

名称NoneFalseTrue__debug__不能重新分配 (分配给他们,甚至作为一个属性名称,提高SyntaxError错误), 这样他们就可以被认为是“真“常数。

值得一提的是,assigning to __debug__ only became illegal in version 2.7FalseTrue以后。有可能在另一个版本中指定NotImplemented可能是非法的。

相关问题