Мое предложение состоит в том, чтобы использовать функцию. Но вместо того, чтобы помещать 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
.
Если бы пользователь мог изменить режим детализации во время выполнения вашей программы, это был бы неправильный подход (вам понадобится if
в функции), но поскольку вы устанавливаете его с помощью команды -line, вам нужно принять решение только один раз.
Затем вы используете, например. verboseprint("look at all my verbosity!", object(), 3)
всякий раз, когда вы хотите напечатать "подробное" сообщение.
person
kindall
schedule
12.05.2011