Warum vergleichen von strings entweder mit '==' oder 'ist' manchmal ein anderes Ergebnis?

Habe ich ein Python-Programm, in dem zwei Variablen werden auf den Wert festgelegt 'public'. In einem bedingten Ausdruck ich habe den Vergleich var1 is var2 was nicht, aber wenn ich es ändern zu var1 == var2 es gibt True.

Nun, wenn ich mein Python-interpreter und das gleiche tun "ist" - Vergleich, gelingt es.

>>> s1 = 'public'
>>> s2 = 'public'
>>> s2 is s1
True

Was vermisse ich hier?

  • Ich weiß nicht, etwas über Python, aber es ist möglich, dass man den Vergleich von Werten, während der andere Vergleich von Objekten?
  • siehe: stackoverflow.com/questions/1392433/...
  • Dieses problem tritt auch auf, wenn Sie Lesen eine Konsole zur Eingabe über z.B.: input = raw_input("Decide (y/n): "). In diesem Fall wird eine Eingabe von "y" und if input == 'y':wird "True" zurückgegeben, während if input is 'y': False zurück.
  • Dieser blog bietet eine weitaus ausführlichere Erklärung als keine Antwort guilload.com/python-string-interning
  • Wie @chris-rico erwähnt, habe ich große Erklärung hier stackoverflow.com/q/15541404/1695680
  • können Sie erklären, warum speziell in der original-poster Beispiel den operator "is" nicht auf das Skript, sondern den gleichen Betreiber auf der gleichen strings "true" zurückgegeben, die auf den interaktiven Modus? Es ist der gleiche interpreter, so sollten wir erwarten das gleiche Verhalten über Ihr Praktikum, was Sie haben es, ein Skript auszuführen oder ausführen, die im interaktiven Modus, richtig?
  • Mögliche Duplikate von gibt es einen Unterschied zwischen `==` und `ist` in Python?

InformationsquelleAutor jottos | 2009-10-01
Schreibe einen Kommentar