Ma suggestion est d'utiliser une fonction. Mais plutôt que de mettre le if
dans la fonction, ce que vous pourriez être tenté de faire, faites-le comme ceci:
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
(Oui, vous pouvez définir une fonction dans une if
instruction, et elle ne sera définie que si la condition est vraie!)
Si vous utilisez Python 3, où print
est déjà une fonction (ou si vous êtes prêt à l'utiliser print
comme fonction dans 2.x en utilisant from __future__ import print_function
), c'est encore plus simple:
verboseprint = print if verbose else lambda *a, **k: None
De cette façon, la fonction est définie comme une action à ne rien faire si le mode verbeux est désactivé (en utilisant un lambda), au lieu de tester constamment l' verbose
indicateur.
Si l'utilisateur pouvait changer le mode de verbosité pendant l'exécution de votre programme, ce serait la mauvaise approche (vous auriez besoin du if
dans la fonction), mais puisque vous le définissez avec un indicateur de ligne de commande, il vous suffit de prendre la décision une fois.
Vous utilisez ensuite par exemple verboseprint("look at all my verbosity!", object(), 3)
chaque fois que vous souhaitez imprimer un message "détaillé".