Python3:关键字和内置函数之间有什么区别?

beh*_*uri 14 python python-3.x

在python 3中,

>>> import keyword
>>> keyword.kwlist
Run Code Online (Sandbox Code Playgroud)

>>> import builtins
>>> dir(builtins)
Run Code Online (Sandbox Code Playgroud)

是两个不同的列表,但它们具有一些共同的值,特别是

>>> set(dir(builtins)) & set(keyword.kwlist)
{'False', 'True', 'None'}
Run Code Online (Sandbox Code Playgroud)

python中关键字和内置函数有什么区别?当是'False', 'None', 'True'关键字,当他们是内建?(如果这有任何区别)

Ray*_*ger 21

关键字是解析器处理的核心语言结构.这些单词是保留的,不能用作标识符:http://docs.python.org/reference/lexical_analysis.html#keywords

Builtins是常用的预加载函数,常量,类型和异常的列表:http: //docs.python.org/library/functions.html

在Python 3中,重叠的单词False,NoneTrue是内置常量,受到解析器的保护.这可以防止意外覆盖等True=10.作为关键字,可以阻止此分配:

>>> True = 10
SyntaxError: assignment to keyword
Run Code Online (Sandbox Code Playgroud)

其余的内置版本没有受到保护,可以用类似的东西重新分配__builtins__.list = mylist.

  • 阻止赋值为True,False和None允许代码生成器将它们视为实常数而不是变量.它允许生成更快的代码,它允许人们编写代码将它们视为单例(*是*测试而不是==测试),它可以帮助人们阅读代码,因为他们知道真/假/无总是意味着真/假/无.当然,他们是关键词的真正原因是Guido想要那样:-) (11认同)
  • @Inerdia:我不是说我真的想重置其中任何一个.我只是想知道为什么我不允许使用允许许多其他事情没有立即理解的语言.雷蒙德的解释足够令人信服. (2认同)