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