2017-06-15 48 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可能是非法的。

相關問題