Мое предложение - использовать функцию. Но вместо того, чтобы вставлять ifв функцию, что может возникнуть соблазн сделать, сделайте это так:
if verbose:
def verboseprint(*args):
for arg in args:
print arg,
print
else:
verboseprint = lambda *a: None
(Да, вы можете определить функцию в ifоператоре, и она будет определена, только если условие истинно!)
Если вы используете Python 3, где printуже есть функция (или если вы хотите использовать printкак функцию в 2.x, используя from __future__ import print_function), это еще проще:
verboseprint = print if verbose else lambda *a, **k: None
Таким образом, функция определяется как бездействующая, если подробный режим выключен (с использованием лямбда), вместо постоянного тестирования verboseфлага.
Если бы пользователь мог изменить режим детализации во время выполнения вашей программы, это был бы неправильный подход (вам понадобится ifфункция в функции), но, поскольку вы устанавливаете его с помощью флага командной строки, вам нужно только принять решение один раз.
Затем вы можете использовать, например, verboseprint("look at all my verbosity!", object(), 3)всякий раз, когда хотите распечатать «подробное» сообщение.