Ich war ziemlich überrascht, als
[] is not []
bewertet nach True
.
Was geschieht in diesem Code? Was wirklich not
y is
Aussagen machen?
Ich war ziemlich überrascht, als
[] is not []
bewertet nach True
.
Was geschieht in diesem Code? Was wirklich not
y is
Aussagen machen?
Ich weiß, ich bin Posting zu einem ziemlich alten Beitrag. jedoch, dies könnte helfen, jemand stolpern auf diese wie ich.
"is" prüft, ob eine Speicheradresse gleich ist oder nicht, während "==" prüft, ob der Wert gleich ist oder nicht. Das folgende Beispiel macht dies deutlich
Lassen Sie uns zunächst über unveränderliche Objekte sprechen, da diese leicht zu verstehen sind
# could be any immutable object
immutable_a = 10
immutable_b = 10
# prints address of a and b variable
print "address of a is %s" % id(immutable_a)
print "address of a is %s" % id(immutable_b)
# as both addresses is same, following shall be true
print immutable_a is immutable_b
# as the values are also same, following shall be true as well
print immutable_a == immutable_b
Nun zu den veränderbaren Objekten
# could be any mutable object
mutable_a = [10]
mutable_b = [10]
# prints address of a and b variable
print "address of mutable_a is %s" % id(mutable_a)
print "address of mutable_b is %s" % id(mutable_b)
# as addresses are not same, following shall be false
print mutable_a is mutable_b
# as the values are same, following shall be true
print mutable_a == mutable_b
@Jiaaro hat Recht. Verwendung von is
mit unveränderlichen Datentypen ist gefährlich, da sie aufgrund der Interpreteroptimierung von Python nicht vorhersehbar ist.
Siehe dieses Beispiel:
10 * "a" is 10 * "a" # True
100 * "a" is 100 * "a" # False
In der zweiten Zeile ist es schneller, ein neues Objekt mit einer neuen ID für den Interpreter zu erstellen. Verwenden Sie also die is
Operator nur bei veränderlichen Typen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.