Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Identitet kontra likhet | Booleska Värden och Jämförelser
Datatyper i Python

bookIdentitet 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?

  • is kontrollerar objektidentitet — om två variabler pekar på samma objekt i minnet;
  • == kontrollerar värdelikhet — om två objekt har samma innehåll.
1234567
a = [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
copy

När ska is användas och när bör det undvikas

  • Använd is vid jämförelse med singletons såsom None;
123
value = None if value is None: print("No value")
copy
  • is not är den negerade identitetskontrollen;
123
var = 64 if var is not None: print("var has a value: ", var)
copy
  • Undvik att använda is fö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;
123456789
x = 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
copy
  • För booleans, föredra sanningsvärdeskontroller.
123
flag = True if flag: # clearer than: if flag is True print("flag is True")
copy

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?

question-icon

Fyll i luckorna med is eller ==:

Use to check if two variables point to the same object.
Use
to check if two values have the same contents.

Click or drag`n`drop items and fill in the blanks

question mark

Vad är det korrekta sättet att testa för "inget värde"?

Select the correct answer

question mark

Vilket påstående är rekommenderat?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 3

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

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

bookIdentitet 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?

  • is kontrollerar objektidentitet — om två variabler pekar på samma objekt i minnet;
  • == kontrollerar värdelikhet — om två objekt har samma innehåll.
1234567
a = [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
copy

När ska is användas och när bör det undvikas

  • Använd is vid jämförelse med singletons såsom None;
123
value = None if value is None: print("No value")
copy
  • is not är den negerade identitetskontrollen;
123
var = 64 if var is not None: print("var has a value: ", var)
copy
  • Undvik att använda is fö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;
123456789
x = 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
copy
  • För booleans, föredra sanningsvärdeskontroller.
123
flag = True if flag: # clearer than: if flag is True print("flag is True")
copy

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?

question-icon

Fyll i luckorna med is eller ==:

Use to check if two variables point to the same object.
Use
to check if two values have the same contents.

Click or drag`n`drop items and fill in the blanks

question mark

Vad är det korrekta sättet att testa för "inget värde"?

Select the correct answer

question mark

Vilket påstående är rekommenderat?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 3
some-alt