In meinem Testcode, warum die print
Ergebnisse für Tupel und None sind unterschiedlich? Es scheint, dass a, b auf dasselbe Objekt zeigen None
, aber c, d zeigen auf verschiedene Objekte, obwohl ihre Werte gleich sind (beide gleich (a,b)
).In Python, ist None ein einzigartiges Objekt?
Ich weiß, dass is
Keyword-Checks für das Objekt nach hinten lieber als vergleicht nur Wert wie ==
. Und hier verwende ich Tupel, weil ich denke, dass Tupel unveränderlich ist, so dass es zumindest nicht darum geht, ob das Objekt veränderlich oder unveränderlich ist.
Aber warum Variablen a, b nicht erstellen und zeigen Sie auf zwei verschiedene None
Objekte als c, d tun Tupel?
a=None
b=None
c=(1,2)
d=(1,2)
print(a is b)
print(c is d)
Nur sicher, für Singleton-Objekt sagten Sie wie keine, True und False, grundsätzlich 'is' und' == 'genau das gleiche? Danke BTW. – Nicholas
Für Booleans ist es ausreichend, das '==' zum Testen (oder das Objekt selbst) zu verwenden, da Objekte Truthy- und Falsy-Werte haben. 'c = 1' wird' c == True' übergeben (besser c direkt wie in 'if c: ...' verwenden), aber nicht 'c ist True'. Achten Sie darauf, 'is 'nur dann zu verwenden, wenn Sie die Identität nicht auf Gleichheit überprüfen wollen. –
Warten, seit wann' a ist b ist c 'nicht geparst als' (a ist b) ist c '? Ich dachte, das gelte nur für die normalen Vergleichsoperatoren. ** edit: ** '' a 'in' ab 'in' abc 'ist auch gültig – Eric