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.