在Python 2中,我们可以重新分配True
and False
(但不是None
),但所有三个(True
, False
, and None
) 被视为内置变量。然而,在 Py3k 中,这三个都被更改为关键字the docs http://docs.python.org/3.0/whatsnew/3.0.html.
根据我自己的猜测,我只能猜测这是为了防止类似的恶作剧this https://stackoverflow.com/questions/2055029/why-cant-python-handle-true-false-values-as-i-expect是从旧的派生出来的True, False = False, True
恶作剧。然而,在 Python 2.7.5 中,也许更早的版本中,诸如None = 3
哪个重新分配None
raised SyntaxError: cannot assign to None
.
从语义上讲,我不相信True
, False
, and None
是关键字,因为它们最终是语义文字,这就是 Java 所做的。我检查了 PEP 0(索引),但找不到解释它们更改原因的 PEP。
是否有性能优势或其他原因使它们成为关键字而不是文字或将它们特殊化None
在 python2 中?
可能是因为Python 2.6不仅允许True = False
但也允许你说一些有趣的话,比如:
__builtin__.True = False
这会重置True
to False
对于整个过程。它可能会导致非常有趣的事情发生:
>>> import __builtin__
>>> __builtin__.True = False
>>> True
False
>>> False
False
>>> __builtin__.False = True
>>> True
False
>>> False
False
EDIT: 正如所指出的Mike https://stackoverflow.com/users/77939/mike, the Python 维基 http://wiki.python.org/moin/Python3.0还规定了以下内容核心语言变化:
- Make True and False keywords.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)