Мое предложение - использовать функцию. Но вместо того, чтобы вставлять 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)
всякий раз, когда хотите распечатать «подробное» сообщение.