私の提案は、関数を使用することです。しかし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
ステートメントで。条件がtrueの場合にのみ定義されます!)
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)
「冗長」メッセージを出力するときに使用します。