Identitet vs Lighed
Dette kapitel adskiller identitet fra lighed. Identitet afgør, om to variabler refererer til samme objekt i hukommelsen; lighed afgør, om to objekter har samme værdi. Forståelsen af denne forskel er afgørende for at skrive korrekte betingelser, valideringer og databehandlingslogik.
Hvad er is?
iskontrollerer objektidentitet — om to variabler peger på samme objekt i hukommelsen;==kontrollerer lighed af værdier — om to objekter har samme indhold.
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
Hvornår skal is bruges, og hvornår skal det undgås
- Brug
isved sammenligning med singletons såsomNone;
123value = None if value is None: print("No value")
is noter den negaterede identitetstjek;
123var = 64 if var is not None: print("var has a value: ", var)
- Undgå at bruge
istil at kontrollere lighed mellem tal eller strenge. På grund af intern caching/interning kan identitet tilsyneladende "virke" nogle gange, men det er ikke pålideligt på tværs af forskellige kørseler og miljøer; brug==i stedet.
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
- For boolske værdier, foretræk sandhedsværdikontrol.
123flag = True if flag: # clearer than: if flag is True print("flag is True")
1. Udfyld hullerne med is eller ==:
2. Hvad er den korrekte måde at teste for "ingen værdi"?
3. Hvilken erklæring er anbefalet?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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 vs Lighed
Stryg for at vise menuen
Dette kapitel adskiller identitet fra lighed. Identitet afgør, om to variabler refererer til samme objekt i hukommelsen; lighed afgør, om to objekter har samme værdi. Forståelsen af denne forskel er afgørende for at skrive korrekte betingelser, valideringer og databehandlingslogik.
Hvad er is?
iskontrollerer objektidentitet — om to variabler peger på samme objekt i hukommelsen;==kontrollerer lighed af værdier — om to objekter har samme indhold.
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
Hvornår skal is bruges, og hvornår skal det undgås
- Brug
isved sammenligning med singletons såsomNone;
123value = None if value is None: print("No value")
is noter den negaterede identitetstjek;
123var = 64 if var is not None: print("var has a value: ", var)
- Undgå at bruge
istil at kontrollere lighed mellem tal eller strenge. På grund af intern caching/interning kan identitet tilsyneladende "virke" nogle gange, men det er ikke pålideligt på tværs af forskellige kørseler og miljøer; brug==i stedet.
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
- For boolske værdier, foretræk sandhedsværdikontrol.
123flag = True if flag: # clearer than: if flag is True print("flag is True")
1. Udfyld hullerne med is eller ==:
2. Hvad er den korrekte måde at teste for "ingen værdi"?
3. Hvilken erklæring er anbefalet?
Tak for dine kommentarer!