Minha sugestão é usar uma função. Mas em vez de colocar o if
na função, o que você pode ficar tentado a fazer, faça assim:
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
(Sim, você pode definir uma função em uma if
instrução, e ela só será definida se a condição for verdadeira!)
Se você estiver usando Python 3, onde print
já existe uma função (ou se quiser usar print
como uma função no uso de 2.x from __future__ import print_function
), é ainda mais simples:
verboseprint = print if verbose else lambda *a, **k: None
Dessa forma, a função é definida como não fazer nada se o modo detalhado estiver desativado (usando um lambda), em vez de testar constantemente o verbose
sinalizador.
Se o usuário pudesse alterar o modo de verbosidade durante a execução do seu programa, esta seria a abordagem errada (você precisaria do if
na função), mas como você está configurando com um sinalizador de linha de comando, você só precisa tome a decisão uma vez.
Você então usa, por exemplo, verboseprint("look at all my verbosity!", object(), 3)
sempre que quiser imprimir uma mensagem "detalhada".