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

How do I undo True = False in python interactive mode?

所以我尝试了 Ned Deily 在他的回答 here 中提到的 "evil" 事情。现在我知道类型 True 现在总是 False。我如何在交互式 window?

中反转它

不要做的事情:

True = False

由于 True 现在已完全被 False 覆盖,因此似乎没有明显的回溯方法。是否有一个 True 来自的模块,我可以做类似的事情:

True = <'module'>.True

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

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

这个有效:

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

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

>>> True = not None

因为 None 无法重新分配。

无论是否已将 True 重新分配给 False5'foo'None,这些计算结果也为 True,等:

>>> 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

只需这样做:

True = bool(1)

或者,因为布尔值本质上是整数:

True = 1

为了完整起见:Kevin 提到您还可以从 __builtins__:

获取真正的 True
>>> True = False
>>> True
False
>>> True = __builtins__.True
>>> True
True

但是 True 也可以被覆盖:

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

所以最好选择其他选项之一。

另一种方式:

>>> True = 1 == 1
>>> False = 1 == 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__