如何在python交互模式下撤消True = False?

时间:2015-05-31 23:20:47

标签: python boolean python-2.x

所以我尝试了Ned Deily在他的回答here中提到的“邪恶”的事情。现在我认为类型True现在总是为假。我如何在交互式窗口中反转这个?

不要这样做:

True = False

由于True现在已被False完全覆盖,因此似乎没有明显的回溯方式。是否存在True来自我可以执行以下操作的模块:

True = <'module'>.True

6 个答案:

答案 0 :(得分:138)

您只需del自定义名称即可将其设置为默认值:

>>> True = False
>>> True
False
>>> del True
>>> True
True
>>>

答案 1 :(得分:48)

这有效:

>>> True = False
>>> True
False
>>> True = not False
>>> True
True

但如果False也被摆弄,则会失败。因此这更好:

>>> True = not None

因为None无法重新分配。

无论True是否已重新分配到TrueFalse5'foo'等,这些评估也会评估为None

>>> True = True == True   # fails if True = float('nan')
>>> True = True is True
>>> True = not True or not not True
>>> True = not not True if True else not True
>>> True = not 0

答案 2 :(得分:38)

另一种方式:

>>> True = 1 == 1
>>> False = 1 == 2

答案 3 :(得分:17)

为了完整性:Kevin提到您还可以从True获取真实__builtins__

>>> True = False
>>> True
False
>>> True = __builtins__.True
>>> True
True

True也可以覆盖:

>>> __builtins__.True = False
>>> __builtins__.True
False

最好选择其中一个选项。

答案 4 :(得分:12)

这样做:

True = bool(1)

或者,因为布尔语基本上是整数:

True = 1

答案 5 :(得分:2)

不使用对象文字但与1 == 1一样耐用的解决方案。当然,一旦定义了True,您就可以定义False,因此我将提供半对的解决方案。

def f(): pass
class A(): pass
True = not f()
False = A != A
False = not (lambda:_).__gt__(_)
True = not (lambda:_).__doc__