Il mio suggerimento è di utilizzare una funzione. Ma invece di inserire la iffunzione, 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 printcome 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".