None în Python

Valoarea specială care înseamnă „nimic”, „lipsă” sau „necunoscut”.

Sintaxă
variabila = None
if variabila is None: ...

Ce face None

None este singura valoare a tipului NoneType. Îl folosești pentru o valoare care încă nu există (un câmp opțional necompletat) și îl primești de la funcțiile care nu au return.

Verificarea corectă se face cu is: if x is None, nu if x == None. None este considerat fals într-un if, la fel ca 0 sau textul gol, așa că if not x nu face diferența între ele.

Exemple

Exemplul 1: Valoare lipsă și is None

def cauta_telefon(nume):
    agenda = {"Ana": "0722 111 222"}
    return agenda.get(nume)

for nume in ["Ana", "Mihai"]:
    telefon = cauta_telefon(nume)
    if telefon is None:
        print(nume, "nu are telefon salvat")
    else:
        print(nume, telefon)

Rezultat

Ana 0722 111 222
Mihai nu are telefon salvat

Exemplul 2: Parametru opțional cu None

def adauga(produs, cos=None):
    if cos is None:
        cos = []
    cos.append(produs)
    return cos

print(adauga("pâine"))
print(adauga("lapte"))
print(type(None).__name__)

Rezultat

['pâine']
['lapte']
NoneType

Greșeli frecvente

  • Folosești if not x când vrei să verifici doar None. Valoarea 0 sau textul gol vor fi tratate la fel; scrie if x is None.
  • Primești AttributeError: 'NoneType' object has no attribute .... O funcție a returnat None (de exemplu list.sort()), iar tu ai apelat o metodă pe rezultat.

Comenzi înrudite

  • is / is not: Verifică dacă două nume arată spre exact același obiect din memorie.
  • bool(), True și False: Tipul logic, cu valorile True și False; bool() spune dacă o valoare este considerată adevărată.
  • return: Încheie funcția și trimite un rezultat înapoi către cel care a apelat-o.
  • dict.get(): Citește valoarea unei chei; dacă cheia lipsește, returnează o valoare implicită în loc de eroare.