如何在 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
重新分配给 False
、5
、'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__
所以我尝试了 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
重新分配给 False
、5
、'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__