Identität vs. Gleichheit
Dieses Kapitel unterscheidet Identität von Gleichheit. Identität bestimmt, ob zwei Variablen auf dasselbe Objekt im Speicher verweisen; Gleichheit bestimmt, ob zwei Objekte den gleichen Wert haben. Das Verständnis dieses Unterschieds ist entscheidend für das Schreiben korrekter Bedingungen, Validierungen und Datenverarbeitungslogik.
Was ist is?
isprüft die Objektidentität — ob zwei Variablen auf dasselbe Objekt im Speicher zeigen;==prüft die Wertgleichheit — ob zwei Objekte den gleichen Inhalt haben.
1234567a = [1, 2] b = [1, 2] c = a print(a == b) # True - same contents print(a is b) # False - different list objects print(a is c) # True - c refers to the very same list as a
Wann is verwendet werden sollte und wann nicht
- Verwendung von
isbeim Vergleich mit Singletons wieNone;
123value = None if value is None: print("No value")
is notist die verneinte Identitätsprüfung;
123var = 64 if var is not None: print("var has a value: ", var)
- Vermeidung der Verwendung von
iszum Vergleich auf Gleichheit zwischen Zahlen oder Zeichenketten. Aufgrund von internem Caching/Interning kann Identität manchmal scheinbar "funktionieren", ist jedoch nicht zuverlässig über verschiedene Ausführungen und Umgebungen hinweg; stattdessen==verwenden.
123456789x = 256 y = 256 print(x == y) # True (same value) print(x is y) # May appear True; do not rely on identity here s1 = "hello" s2 = "he" + "llo" print(s1 == s2) # True print(s1 is s2) # Implementation detail; avoid using is here
- Bei Booleans bevorzugt Wahrheitswertprüfungen.
123flag = True if flag: # clearer than: if flag is True print("flag is True")
1. Fülle die Lücken mit is oder ==:
2. Was ist die korrekte Methode, um auf „keinen Wert“ zu prüfen?
3. Welche Aussage ist empfohlen?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain more about why using `is` with numbers or strings is unreliable?
When should I use `==` instead of `is` in my code?
Can you give more examples of identity vs equality in Python?
Awesome!
Completion rate improved to 5
Identität vs. Gleichheit
Swipe um das Menü anzuzeigen
Dieses Kapitel unterscheidet Identität von Gleichheit. Identität bestimmt, ob zwei Variablen auf dasselbe Objekt im Speicher verweisen; Gleichheit bestimmt, ob zwei Objekte den gleichen Wert haben. Das Verständnis dieses Unterschieds ist entscheidend für das Schreiben korrekter Bedingungen, Validierungen und Datenverarbeitungslogik.
Was ist is?
isprüft die Objektidentität — ob zwei Variablen auf dasselbe Objekt im Speicher zeigen;==prüft die Wertgleichheit — ob zwei Objekte den gleichen Inhalt haben.
1234567a = [1, 2] b = [1, 2] c = a print(a == b) # True - same contents print(a is b) # False - different list objects print(a is c) # True - c refers to the very same list as a
Wann is verwendet werden sollte und wann nicht
- Verwendung von
isbeim Vergleich mit Singletons wieNone;
123value = None if value is None: print("No value")
is notist die verneinte Identitätsprüfung;
123var = 64 if var is not None: print("var has a value: ", var)
- Vermeidung der Verwendung von
iszum Vergleich auf Gleichheit zwischen Zahlen oder Zeichenketten. Aufgrund von internem Caching/Interning kann Identität manchmal scheinbar "funktionieren", ist jedoch nicht zuverlässig über verschiedene Ausführungen und Umgebungen hinweg; stattdessen==verwenden.
123456789x = 256 y = 256 print(x == y) # True (same value) print(x is y) # May appear True; do not rely on identity here s1 = "hello" s2 = "he" + "llo" print(s1 == s2) # True print(s1 is s2) # Implementation detail; avoid using is here
- Bei Booleans bevorzugt Wahrheitswertprüfungen.
123flag = True if flag: # clearer than: if flag is True print("flag is True")
1. Fülle die Lücken mit is oder ==:
2. Was ist die korrekte Methode, um auf „keinen Wert“ zu prüfen?
3. Welche Aussage ist empfohlen?
Danke für Ihr Feedback!