如何在Python交互模式下撤销True = False?

所以我尝试了Ned Deily在他的回答中提到的“邪恶”事情。 现在我已经知道Truetypes现在总是False。 我如何在交互式窗口中反转这个?

事情不要做:

True = False 

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

 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是否被重新分配到False ,这些也都评价为True5'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 

其他方式:

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

为了完整性,Kevin提到你也可以从__builtins__获取真实的True

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

但是,这也可以被覆盖:

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

所以更好的去与其他选项之一。

只要这样做:

 True = bool(1) 

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

 True = 1 

解决scheme不使用对象字面值,但像1 == 1一样持久。 当然,一旦定义了True,你就可以定义False,所以我将提供解决scheme。

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