Identiteetti vs Yhtäsuuruus
Tässä luvussa erotellaan identiteetti ja yhtäsuuruus. Identiteetti määrittää, viittaavatko kaksi muuttujaa samaan olioon muistissa; yhtäsuuruus määrittää, onko kahdella oliolla sama arvo. Tämän eron ymmärtäminen on olennaista oikeiden ehtolauseiden, validointien ja tietojenkäsittelylogiikan kirjoittamisessa.
Mikä on is?
istarkistaa olion identiteetin — viittaavatko kaksi muuttujaa samaan olioon muistissa;==tarkistaa arvojen yhtäsuuruuden — onko kahdella oliolla sama sisältö.
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
Milloin käyttää is ja milloin välttää sitä
- Käytä
is-operaattoria vertaillessa yksittäisiin olioihin kutenNone;
123value = None if value is None: print("No value")
is noton käänteinen identiteettitarkistus;
123var = 64 if var is not None: print("var has a value: ", var)
- Vältä
is-operaattorin käyttöä numeroiden tai merkkijonojen tasa-arvon tarkistamiseen. Sisäisen välimuistin/internoinnin vuoksi identiteetti saattaa joskus vaikuttaa toimivan, mutta siihen ei voi luottaa eri ajoissa ja ympäristöissä; käytä sen sijaan==-operaattoria.
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
- Totuusarvojen kohdalla suosi totuusarvotarkistuksia.
123flag = True if flag: # clearer than: if flag is True print("flag is True")
1. Täydennä aukot is tai ==:
2. Mikä on oikea tapa testata "ei arvoa"?
3. Mikä väite on suositeltava?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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
Identiteetti vs Yhtäsuuruus
Pyyhkäise näyttääksesi valikon
Tässä luvussa erotellaan identiteetti ja yhtäsuuruus. Identiteetti määrittää, viittaavatko kaksi muuttujaa samaan olioon muistissa; yhtäsuuruus määrittää, onko kahdella oliolla sama arvo. Tämän eron ymmärtäminen on olennaista oikeiden ehtolauseiden, validointien ja tietojenkäsittelylogiikan kirjoittamisessa.
Mikä on is?
istarkistaa olion identiteetin — viittaavatko kaksi muuttujaa samaan olioon muistissa;==tarkistaa arvojen yhtäsuuruuden — onko kahdella oliolla sama sisältö.
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
Milloin käyttää is ja milloin välttää sitä
- Käytä
is-operaattoria vertaillessa yksittäisiin olioihin kutenNone;
123value = None if value is None: print("No value")
is noton käänteinen identiteettitarkistus;
123var = 64 if var is not None: print("var has a value: ", var)
- Vältä
is-operaattorin käyttöä numeroiden tai merkkijonojen tasa-arvon tarkistamiseen. Sisäisen välimuistin/internoinnin vuoksi identiteetti saattaa joskus vaikuttaa toimivan, mutta siihen ei voi luottaa eri ajoissa ja ympäristöissä; käytä sen sijaan==-operaattoria.
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
- Totuusarvojen kohdalla suosi totuusarvotarkistuksia.
123flag = True if flag: # clearer than: if flag is True print("flag is True")
1. Täydennä aukot is tai ==:
2. Mikä on oikea tapa testata "ei arvoa"?
3. Mikä väite on suositeltava?
Kiitos palautteestasi!