Identitet kontra likhet
Detta kapitel skiljer på identitet och likhet. Identitet avgör om två variabler refererar till samma objekt i minnet; likhet avgör om två objekt har samma värde. Att förstå denna skillnad är avgörande för att skriva korrekta villkor, valideringar och databehandlingslogik.
Vad är is?
iskontrollerar objektidentitet — om två variabler pekar på samma objekt i minnet;==kontrollerar värdelikhet — om två objekt har samma innehåll.
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
När ska is användas och när bör det undvikas
- Använd
isvid jämförelse med singletons såsomNone;
123value = None if value is None: print("No value")
is notär den negerade identitetskontrollen;
123var = 64 if var is not None: print("var has a value: ", var)
- Undvik att använda
isför att kontrollera likhet mellan tal eller strängar. På grund av intern cache/interning kan identitet ibland verka "fungera", men det är inte tillförlitligt mellan olika körningar och miljöer, använd==istället;
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
- För booleans, föredra sanningsvärdeskontroller.
123flag = True if flag: # clearer than: if flag is True print("flag is True")
1. Fyll i luckorna med is eller ==:
2. Vad är det korrekta sättet att testa för "inget värde"?
3. Vilket påstående är rekommenderat?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Identitet kontra likhet
Svep för att visa menyn
Detta kapitel skiljer på identitet och likhet. Identitet avgör om två variabler refererar till samma objekt i minnet; likhet avgör om två objekt har samma värde. Att förstå denna skillnad är avgörande för att skriva korrekta villkor, valideringar och databehandlingslogik.
Vad är is?
iskontrollerar objektidentitet — om två variabler pekar på samma objekt i minnet;==kontrollerar värdelikhet — om två objekt har samma innehåll.
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
När ska is användas och när bör det undvikas
- Använd
isvid jämförelse med singletons såsomNone;
123value = None if value is None: print("No value")
is notär den negerade identitetskontrollen;
123var = 64 if var is not None: print("var has a value: ", var)
- Undvik att använda
isför att kontrollera likhet mellan tal eller strängar. På grund av intern cache/interning kan identitet ibland verka "fungera", men det är inte tillförlitligt mellan olika körningar och miljöer, använd==istället;
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
- För booleans, föredra sanningsvärdeskontroller.
123flag = True if flag: # clearer than: if flag is True print("flag is True")
1. Fyll i luckorna med is eller ==:
2. Vad är det korrekta sättet att testa för "inget värde"?
3. Vilket påstående är rekommenderat?
Tack för dina kommentarer!