मेरा सुझाव एक फ़ंक्शन का उपयोग करना है। लेकिन 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
(हां, आप किसी फ़ंक्शन को a में परिभाषित कर सकते हैं if
कथन , और यह केवल तभी परिभाषित होगा जब स्थिति सही हो!)
यदि आप पायथन 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)
जब भी आप एक "क्रिया" संदेश मुद्रित करना चाहते हैं।