Mi sugerencia es utilizar una función. Pero en lugar de poner el if
en 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 print
ya hay una función (o si está dispuesto a usar print
como 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 verbose
bandera.
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 if
en 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".