【问题标题】:Why can you assign to NotImplemented?为什么可以分配给 NotImplemented?
【发布时间】:2017-06-15 04:44:59
【问题描述】:

在 Python 3 中,您不能分配给 TrueFalseNone。但是,至少在 CPython 上,您可以分配给 NotImplemented

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

这背后的原因是什么?

【问题讨论】:

    标签: python-3.x variable-assignment


    【解决方案1】:

    Python 常量enumerated here 不是“常量”(它们可以重新分配),除非那些明确表示:“分配给 X 是非法的并引发 SyntaxError”。它们是:FalseTrueNone__debug__。这在注释中明确指出:

    名称 NoneFalseTrue__debug__ 无法重新分配 (对它们的赋值,即使作为属性名称,也会引发 SyntaxError), 所以它们可以被认为是“真正的”常量。

    值得注意的是assigning to __debug__ only became illegal in version 2.7FalseTrue 稍后。在进一步的版本中,分配给NotImplemented 可能是非法的。

    【讨论】:

      猜你喜欢
      • 2021-12-12
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      • 2011-08-11
      • 2020-01-26
      相关资源
      最近更新 更多