2012-11-13 5 views
6

Ist die Reihenfolge von True und False in Python gut definiert oder wird sie als Implementierungsdetail beibehalten?Ist Pythons Bool-Sortierung definiert?

Von der Konsole aus sehe ich falsche Sortierung vor True ... aber ich weiß nicht, ob das ein Verhalten ist, auf das ich mich verlassen sollte oder nicht.

(Ich bin sicher, dass einige Python doc darüber gibt es, aber ich kann es nicht finden ...)

+1

Für Bonuspunkte versuchen Sie Arithmetik mit Bools. '(True + True) ** - True == 0.5' ... –

+0

@JameySharp bist du ein Zauberer? – rsegal

+0

@rsegal Ich entdeckte, dass 'sum ([True, False, ...])' eine nette Methode ist, um die Anzahl der wahren Fälle in einer Liste zu zählen, und der obige schreckliche Missbrauch folgte schnell danach. –

Antwort

12

http://docs.python.org/2/reference/datamodel.html#the-standard-type-hierarchy

Boolesche: Diese stellen die Wahrheitswerte wahr und falsch . Die zwei Objekte, die die Werte False und True darstellen, sind die einzigen booleschen Objekte. Der boolesche Typ ist ein Subtyp einfacher Ganzzahlen, und Boolesche Werte verhalten sich in fast allen Kontexten wie die Werte 0 und 1. Die Ausnahme ist, dass bei der Umwandlung in einen String die Zeichenfolgen "False" oder "True" zurückgegeben werden. beziehungsweise.

Dies liest mir, dass die Python-Sprache erfordert False < True, False == 0, True == 1, True != 2.

Derselbe Wortlaut wird auch in Python 3 beibehalten.

+2

Wenn Sie nicht sicher sind, ob Sie dem Verständnis von sharth zustimmen, versuchen Sie es mit einem Interpreter. Sie werden schnell überprüfen, dass "False rsegal