J'ai donc essayé la chose "maléfique" que Ned Deily a mentionnée dans sa réponse ici . Maintenant, j'ai que le type True est désormais toujours False. Comment pourrais-je inverser cela dans la fenêtre interactive?
Chose à ne pas faire:
True = False
Étant donné que True a maintenant été complètement remplacé par False, il ne semble pas y avoir de moyen évident de revenir en arrière. Y a-t-il un module dont True vient et que je peux faire quelque chose comme:
True = <'module'>.True
Vous pouvez simplement del
votre nom personnalisé pour le redéfinir par défaut:
>>> True = False
>>> True
False
>>> del True
>>> True
True
>>>
Cela marche:
>>> True = False
>>> True
False
>>> True = not False
>>> True
True
mais échoue si False
a également été manipulé. C'est donc mieux:
>>> True = not None
car None
ne peut pas être réaffecté.
Ceux-ci évaluent également à True
indépendamment du fait que True
ait été réaffecté à False
, 5
, 'foo'
, None
, etc.:
>>> 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
Autrement:
>>> True = 1 == 1
>>> False = 1 == 2
Pour être complet: Kevin mentionne que vous pouvez également récupérer le vrai True
de __builtins__
:
>>> True = False
>>> True
False
>>> True = __builtins__.True
>>> True
True
Mais ce True
peut également être remplacé:
>>> __builtins__.True = False
>>> __builtins__.True
False
Il vaut donc mieux aller avec l'une des autres options.
Faites juste ceci:
True = bool(1)
Ou, parce que les booléens sont essentiellement des entiers:
True = 1
Solutions qui n'utilisent aucun littéral d'objet mais sont aussi durables que 1 == 1
. Bien sûr, vous pouvez définir False une fois que True est défini, donc je fournirai des solutions en demi-paires.
def f(): pass
class A(): pass
True = not f()
False = A != A
False = not (lambda:_).__gt__(_)
True = not (lambda:_).__doc__