在Python 2中,我们可以重新分配True
和False
(但不是None
),但这三个(True
、False
和None
)都被视为内置变量。然而,在Py3k中,这三个词都按照the docs变成了关键字。
根据我自己的推测,我只能猜测,这是为了防止像this这样的恶作剧,这些恶作剧源自于古老的True, False = False, True
恶作剧。然而,在Python2.7.5中,可能在之前,重新分配None
的None = 3
语句引发了SyntaxError: cannot assign to None
。
在语义上,我不相信True
、False
和None
是关键字,因为它们最终是语义上的文本,这正是Java所做的。我查看了PEP 0(索引),但找不到解释更改原因的PEP。
与python2中的None
那样的文字或特殊大小写相比,使它们成为关键字是否有性能优势或其他原因?
主要有两个原因:
可能是因为Python2.6不仅允许
True = False
,还允许您说一些有趣的事情,比如:这将在整个过程中将
True
重置为False
。它会导致非常有趣的事情发生:编辑:正如Mike所指出的,Python wiki还在核心语言更改下声明如下:
几个月前在python-dev上讨论过这个问题。 与非本地或带有语句doc的链接相反,拥有大量指向True定义的链接会很烦人。
我总结了为什么真假会让事情变得“更美好”。
作为循环内调用的函数的副作用重新绑定。
很容易改变事实,例如:
def True(): print True
对于让用户代码重新绑定内置名称None、True和False,没有什么好的用例,使它们成为关键字几乎只有plus。
使程序在每一步都要在符号表中查找“真”,才发现真的有值真的远非直观。(这就是为什么1比True快。)
参考:
开始与指定真假相关的谈话:
一些辅助数据:
注:有些数字显示为真/1:
相关问题 更多 >
编程相关推荐