basics michael poeltl © 2011,2013 |
Überprüft, ob gleiche Identität (im Unterschied zu ==
, was Gleichheit der Objekte checked, was deren Wert angeht)
>>> a = 5 >>> b = 18 >>> c = a >>> a == 5 True >>> a != b True >>> a < b True >>> a is 5 True >>> a is not b True >>> a is not c False >>>
Wir wissen bereits, dass jedes Objekt SEINE id(entity) hat, die es von allen anderen Objekten unterscheidet - auf das Objekt können nun mehrere Namen (auch aus unterschiedlichen namespaces) zeigen.
is
und is not
testen, ob die object-id's gleich sind, oder nicht. Die überprüfen also, ob die Namen auf den *gleichen* Adress-Bereich im Arbeitsspeicher zeigen (auf ein und dasselbe Objekt zeigen).
>>> list1 = [1,2,3] >>> list2 = list1[:] >>> list1 is list2 False >>> list1 == list2 True >>> print( list1, list2 ) [1, 2, 3] [1, 2, 3] >>> list3 = list1 >>> list2 is not list3 True >>> list2 != list3 False >>>
das mit and
or
-Logik nocheinmal; not
ist die Verneinung dazu. Als guter Programmier versucht man aber, so oft wie möglich, die Verneinung zu vermeiden. man kann ja an Stelle vona > b and not c < b
auch schreiben
a > b and c > b
schreiben.
>>> if a > b and not c < b: ... print (b) ... 2 >>> a = True >>> b = False >>> a and b False >>> a or b True >>> not a False >>> not b True >>> not () True >>>