Python: evitare if-else inutili

Python: evitare if-else inutili

Esiste un modo molto semplice per evitare inutili if-else in Python.

La domanda che dobbiamo porci è la seguente: se la condizione posta non viene soddisfatta, possiamo continuare ad eseguire il nostro codice o tale condizione è imprescindibile?

Consideriamo la seguente funzione:

import os

def get_file_data(filename=None):
    if filename is not None or os.path.exists(filename):
        with open(filename, 'r') as f:
            return f.read()
    else:
        return None          

In questo caso il blocco else non è necessario, in quanto è sufficiente invertire la condizione booleana e restituire subito il valore None perché se non viene passato alcun parametro o se il file non esiste, l'esecuzione del codice non può continuare.

import os

def get_file_data(filename=None):
    if filename is None or not os.path.exists(filename):
        return None
    with open(filename, 'r') as f:
        return f.read()

In altre parole, è sempre preferibile esaurire subito le possibilità avverse con un semplice costrutto if invece che affrontarle creando inutili branch di esecuzione il cui risultato finale è spesso quello di rendere il nostro codice pesante e poco leggibile.

Torna su