Mi sugerencia es utilizar una función. Pero en lugar de poner el ifen la función, lo que podría tener la tentación de hacer, hágalo así:
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í, puede definir una función en un if declaración, ¡y solo se definirá si la condición es verdadera!)
Si está usando Python 3, donde printya hay una función (o si está dispuesto a usar printcomo función en 2.x usando from __future__ import print_function) es aún más simple:
verboseprint = print if verbose else lambda *a, **k: None
De esta manera, la función se define como no hacer nada si el modo detallado está desactivado (usando una lambda), en lugar de probar constantemente la verbosebandera.
Si el usuario pudiera cambiar el modo de verbosidad durante la ejecución de su programa, este sería el enfoque incorrecto (necesitaría el ifen la función), pero como lo está configurando con una marca de línea de comandos, solo necesita tomar la decisión una vez.
A continuación, utilice, por ejemplo, verboseprint("look at all my verbosity!", object(), 3)cada vez que desee imprimir un mensaje "detallado".