为什么内置函数中是“None”.__dict__

use*_*536 7 python keyword python-builtins

以下是正确的:

  • 'None' in keyword.kwlist
  • 'None' in builtins.__dict__ # import builtins

我的理解:

  • xPython通过获取对象来评估标识符builtins.__dict__[x]
  • Python evals 关键字x以一种特殊的方式取决于是x什么

这意味着 Python 将关键字 evals为类型(被保留)None的值,而不使用. 那么为什么包含?NoneTypebuiltins.__dict__builtins.__dict__'None'

(同样的问题适用于TrueFalse

che*_*ner 0

一般来说,根本不评估关键字。keyword出于信息目的,该模块仅提供 Python 语法将哪些单词识别为特殊单词。特别是NoneTrue、 和False被识别为(硬)关键字,因此尝试重新定义它们是语法错误,而不是运行时错误。此外,关键字列表根本不参与名称查找。

否则,None就像绑定到某个值的任何其他名称一样(在本例中为 type 的单独值types.NoneType)。特别是,该定义位于内置范围内,因此可以从任何模块中使用它,而无需先导入任何内容。builtins仅反映内置范围中定义的那些名称。

  • (Python 2 中的语法根本没有提到“None”,所以历史上它是一个特殊大小写的名称,也许“None”等仍然在内置范围内只是过去的产物.) (2认同)