所以我尝试了Ned Deily在他的回答here中提到的“邪恶”的事情。现在我认为类型True现在总是为假。我如何在交互式窗口中反转这个?
不要这样做:
True = False
由于True现在已被False完全覆盖,因此似乎没有明显的回溯方式。是否存在True来自我可以执行以下操作的模块:
True = <'module'>.True
答案 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
是否已重新分配到True
,False
,5
,'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__