is / is not în Python

Operatori Python 3.0+

Verifică dacă două nume arată spre exact același obiect din memorie.

Sintaxă
a is b
a is not b

Ce face is / is not

== compară valorile, iar is verifică identitatea: dacă este vorba de același obiect. Două liste cu același conținut sunt egale (==), dar sunt obiecte diferite (is dă False).

Folosește is doar pentru None, True, False și pentru a verifica dacă două variabile împart același obiect. Pentru numere și texte folosește ==.

Exemple

Exemplul 1: Egalitate și identitate

a = [1, 2, 3]
b = [1, 2, 3]
c = a
print(a == b, a is b)
print(a is c)
c.append(4)
print(a)

Rezultat

True False
True
[1, 2, 3, 4]

Exemplul 2: Verificarea lui None

rezultat = None
print(rezultat is None)
print(rezultat is not None)

Rezultat

True
False

Greșeli frecvente

  • Compari numere sau texte cu is. Uneori pare să meargă (Python refolosește câteva obiecte mici), alteori nu; Python 3.8+ afișează chiar un SyntaxWarning pentru x is 5. Folosește ==.

Comenzi înrudite

  • None: Valoarea specială care înseamnă „nimic”, „lipsă” sau „necunoscut”.
  • id(): Returnează identitatea unui obiect: un număr unic cât timp obiectul există.
  • in / not in: Verifică dacă o valoare se află într-o listă, text, dicționar sau mulțime.
  • copy() pentru liste, dicționare și mulțimi: Creează o copie superficială (shallow) a unei liste, a unui dicționar sau a unei mulțimi.