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 xcând vrei să verifici doarNone. Valoarea0sau textul gol vor fi tratate la fel; scrieif x is None. - Primești
AttributeError: 'NoneType' object has no attribute .... O funcție a returnatNone(de exemplulist.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.