basics michael poeltl © 2011,2013

is / is not

Ü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 von
a > 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
>>>

Hier geht es zum Seitenanfang und da geht es zurück zur python-Übersicht