Vorsicht mit
is!!!
is testet auf Identität der Objekte
nicht auf Gleichheit von Wert und Typ.
Code: Alles auswählen
>>> a=1
>>> b=1
>>> print a is b
True
>>> a=123
>>> b=123
>>> print a is b
False
>>> a=125
>>> b=a
>>> print a is b
True
Erklährung: Der erste Fall gibt True zurück, weil die Integerwerte -5 bis 99 (in Python2.3) fix vordefiniert sind, so brauchen für diese sehr häufing z.B. als Indexe für Listen oder in Schleifen verwendeten Werte nicht jedesmal bei Verwendung neue Instanzen erstellt zu werden, was natürlich aufwändiger ist als auf die Vordefinierten Instanzen zuzugreifen.
Wenn man auf Wert und Type Testen will macht man das am Besten so:
Code: Alles auswählen
>>> a = 123
>>> b = 123
>>> print a == b and type(a) == type(b)
True
>>> a = 123.0
>>> b = 123
>>> print a == b and type(a) == type(b)
False
gefahrlos mit is getestet werden kann auf
None,
True und
False!
Gruß
Dookie