Il mio suggerimento è di utilizzare una funzione. Ma invece di inserire la if
funzione, cosa che potresti essere tentato di fare, fallo in questo modo:
if verbose:
def verboseprint(*args):
# Print each argument separately so caller doesn't need to
# stuff everything to be printed into a single string
for arg in args:
print arg,
print
else:
verboseprint = lambda *a: None # do-nothing function
(Sì, puoi definire una funzione in un file if
un'istruzione e verrà definita solo se la condizione è vera!)
Se stai usando Python 3, dove print
è già una funzione (o se sei disposto a usarlo print
come funzione in 2.x usando from __future__ import print_function
) è ancora più semplice:
verboseprint = print if verbose else lambda *a, **k: None
In questo modo, la funzione viene definita come non fare nulla se la modalità dettagliata è disattivata (utilizzando un lambda), invece di testare costantemente il verbose
flag.
Se l'utente potesse cambiare la modalità di verbosità durante l'esecuzione del programma, questo sarebbe l'approccio sbagliato (avresti bisogno del fileif
nella funzione), ma poiché lo stai impostando con un flag della riga di comando, devi solo prendere la decisione una volta.
Quindi si utilizza, ad esempio, verboseprint("look at all my verbosity!", object(), 3)
ogni volta che si desidera stampare un messaggio "dettagliato".