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

hor*_*rta 90 python boolean python-2.x

所以,我想"恶"的东西奈德Deily在他的回答中提到这里.现在我认为类型True现在总是为假.如何在交互式窗口中反转此操作?

不要这样做:

True = False
Run Code Online (Sandbox Code Playgroud)

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

True = <'module'>.True
Run Code Online (Sandbox Code Playgroud)

iCo*_*dez 138

您可以只使用del自定义名称将其设置回默认值:

>>> True = False
>>> True
False
>>> del True
>>> True
True
>>>
Run Code Online (Sandbox Code Playgroud)

  • @ jpmc26 - 是的,这是正确的.但请注意,"True"和"False"不是Python 2.x中的关键字; 他们是内置的.这就是为什么这是可能的.在Python 3.x中,其中`True`和`False`*是*关键字,'True = False`会引发语法错误,因为您无法分配关键字. (10认同)
  • @figs - 如果你修改了`__builtins__`,`del`将不起作用.在这种情况下,最好像Roberto Bonvallet提出的那样做"True = 1 == 1".当然,如果你已经开始修改`__builtins__`,那么你也可以做`del __builtins__`并且真的毁掉了解释器.在某些时候,最好只重新启动它,而不是试图零碎地修复它.:) (7认同)
  • 有趣的是,如果`__builtins __.True`已被更改,这将失败,正如@simonwo的回答中暗示的那样. (5认同)
  • 那么`True = False`命令实际上会创建一个新的本地名称来隐藏关键字,而不是实际替换变量?这只是清理它? (4认同)

101*_*101 48

这有效:

>>> True = False
>>> True
False
>>> True = not False
>>> True
True
Run Code Online (Sandbox Code Playgroud)

但是如果False也被摆弄也失败了.因此这更好:

>>> True = not None
Run Code Online (Sandbox Code Playgroud)

因为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
Run Code Online (Sandbox Code Playgroud)

  • @figs实际上,如果你做了'True,False = False,True`,你可以再做一次,然后你会回到同一个地方. (5认同)
  • @Kevin`True,False = not True,True`修复了这个问题.只要您引用"True"或"False",您就可以推断出另一个. (2认同)

Rob*_*let 38

其他方式:

>>> True = 1 == 1
>>> False = 1 == 2
Run Code Online (Sandbox Code Playgroud)


sim*_*nwo 17

为了完整性:凯文提到你也可以True从中获取真实__builtins__:

>>> True = False
>>> True
False
>>> True = __builtins__.True
>>> True
True
Run Code Online (Sandbox Code Playgroud)

但这True也可以覆盖:

>>> __builtins__.True = False
>>> __builtins__.True
False
Run Code Online (Sandbox Code Playgroud)

最好选择其中一个选项.


Loo*_*vjo 12

这样做:

True = bool(1)
Run Code Online (Sandbox Code Playgroud)

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

True = 1
Run Code Online (Sandbox Code Playgroud)