Benim önerim bir fonksiyon kullanmaktır. Ancak if, yapmak isteyebileceğiniz işlevi yerine koymak yerine , şu şekilde yapın:
if verbose:
def verboseprint(*args):
for arg in args:
print arg,
print
else:
verboseprint = lambda *a: None
(Evet, bir ififadede bir işlev tanımlayabilirsiniz ve yalnızca koşul doğruysa tanımlanır!)
Python 3 kullanıyorsanız, burada printzaten bir işlev varsa (veya print2.x kullanarak bir işlev olarak kullanmak istiyorsanız from __future__ import print_function) daha da basit:
verboseprint = print if verbose else lambda *a, **k: None
Bu şekilde işlev, verbosebayrağı sürekli olarak test etmek yerine, ayrıntılı mod kapalıysa (bir lambda kullanarak) hiçbir şey yapmama olarak tanımlanır .
Kullanıcı , programınızın çalıştırılması sırasında ayrıntı modunu değiştirebilseydi , bu yanlış bir yaklaşım olacaktır ( ifişlevde olması gerekir ), ancak bir komut satırı bayrağıyla ayarladığınız için, yalnızca kararı bir kez ver.
Daha sonra örneğin verboseprint("look at all my verbosity!", object(), 3)bir "ayrıntılı" mesaj yazdırmak istediğinizde kullanın.