Моя порада - використовувати функцію. Але замість того, щоб вводити 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
функція), але оскільки ви встановлюєте його за допомогою прапорця командного рядка, вам потрібно лише прийняти рішення один раз.
Потім ви використовуєте, наприклад, verboseprint("look at all my verbosity!", object(), 3)
коли ви хочете надрукувати "багатослівне" повідомлення.