web-dev-qa-db-fra.com

Comment annuler True = False en python mode interactif?

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
90
horta

Vous pouvez simplement del votre nom personnalisé pour le redéfinir par défaut:

>>> True = False
>>> True
False
>>> del True
>>> True
True
>>>
138
iCodez

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
48
101

Autrement:

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

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.

17
simonwo

Faites juste ceci:

True = bool(1)

Ou, parce que les booléens sont essentiellement des entiers:

True = 1
12
Loovjo

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__
2
PythonNut