Python: l'operatore is e il valore None

Python: l'operatore is e il valore None

L'operatore is di Python è particolarmente consigliato per verificare correttamente se una variabile ha assunto il valore None.

Consideriamo l'esempio del metodo get() dei dizionari. Questo metodo accetta due parametri: il primo è il nome della chiave che si vuole reperire, il secondo, opzionale, specifica il valore predefinito da restituire qualora la chiave non fosse presente. Per impostazione predefinita il valore di default è None.

setting = {'url': 'http://localhost', 'version': 1}

site_home = setting.get('home')

if site_home is not None:
    print(f'Site home: {site_home}')
else:
    print('Option not found')    

In questo esempio il dizionario non ha la chiave home. Non avendo specificato un valore predefinito nel metodo get(), otterremo None in quanto la chiave non esiste. Qui l'operatore is verifica la perfetta identità del valore della variabile con None utilizzando una condizione booleana di negazione, ossia se il valore considerato non è None.

Avremmo anche potuto sfruttare la logica booleana in questo modo facendo affidamento sui valori considerati falsy:

if site_home:
    print(f'Site home: {site_home}')
else:
    print('Option not found')  

Tuttavia, in Python il codice dovrebbe essere autoesplicativo, e il primo approccio rende estremamente chiaro lo scopo della nostra verifica ed il tipo di dati che vogliamo verificare. In casi come questi, dobbiamo evitare la maggiore concisione a beneficio di una maggiore chiarezza.

Torna su