2016-04-21 15 views
0

Kann jemand die Logik hinter diesen Zuweisungsanweisungen klären.Python Boolean Logic Confusion

>>> True 
True 
>>> True = False 
>>> True 
False 
>>> True = True 
>>> True 
False 
>>> a = True 
>>> if a: 
...  print "a is True" 
... else: 
...  print "a is False" 
... 
a is False 

Laut Handbuch, die nur zwei Instanzen der Klasse bool ist True und False.

Help on bool object: 

True = class bool(int) 
| bool(x) -> bool 
| 
| Returns True when the argument x is true, False otherwise. 
| The builtins True and False are the only two instances of the class bool. 
| The class bool is a subclass of the class int, and cannot be subclassed. 
| 
| Method resolution order: 
|  bool 
|  int 
|  object 

Überschreibe ich die Standardinstanz? Und wenn ja, warum weist Python der Standardinstanz in der folgenden Zuweisung True nicht zu? Wie kann ich den Standard-Python True in der folgenden Anweisung zuweisen?

>>> True = False 
>>> True 
False 
>>> True = True 
>>> True 
False  #why? 

Vielen Dank im Voraus für jede Hilfe !!!

+1

Python 3-Tag ist hier irrelevant: [Warum wurden True und False zu Schlüsselwörtern in Python 3 geändert] (http://stackoverflow.com/questions/18050815/why-were-true-and-false-changed -to-keywords-in-python-3) – soon

+0

Der Vergleich erfolgt mit '=='. – RemcoGerlich

+0

@RemcoGerlich Soory für den Silly7-Fehler !!! –

Antwort

0

Wenn Sie das tun:

True = False 

True wird False .. Und wenn Sie das tun:

True = True 

Es ist wie Schreiben:

True = False 

Wenn Sie wollen, dass es das machen "Original" True wieder sollten Sie:

+0

'del True' ist ein besserer Weg, die lokale Variable' True' zu ​​löschen, wodurch die eingebaute Variable wieder sichtbar wird. – RemcoGerlich

+0

Wie können wir auf das integrierte True in Python zugreifen? Es scheint, dass Sie 'nicht' Operation auf die lokale Variable 'True' von Ihrer Antwort ausführen ... –

+0

@HiteshPaul Es wird das "eingebaute" 'True'. – Maroun