डीबगिंग करते समय, मैं किसी फ़ंक्शन के सभी इनपुट और आउटपुट प्रिंट करना पसंद करता हूं (मुझे पता है कि मुझे एक बेहतर आईडीई चाहिए, लेकिन मुझे हास्य, यह त्रुटि रिपोर्टिंग के लिए उपयोग किया जा सकता है)। तो, मैं आदर्श रूप से यह करना चाहता हूं:आप अजगर में @debuggable सजावट कैसे लिखेंगे?
@debuggable
def myfunc(argA,argB,argC):
return argB+1
और डिबगिंग को चालू या बंद करने के लिए वैश्विक चर का उपयोग करें। नहीं, आपको ग्लोबल्स पसंद नहीं है, मैंने अनुमान लगाया है।
सबसे अच्छा मैं के साथ आ सकता है:
DEBUG = True
def debuggable(func):
if DEBUG:
def decorated(*args):
print "Entering ",func.func_name
print " args ",args
ret = func(*args)
print ret
return ret
return decorated
else:
return func
@debuggable
def myfunc(this,that):
return this+that
और चल रहा है:
>>> myfunc(1,3)
Entering myfunc
args (1, 3)
4
मैं ऐसा कैसे सुधार कर सकते हैं?
वहाँ इस विषय पर एक काफी लंबी ब्लॉग पोस्ट है
डेकोरेटर तो अधिक की तरह कुछ लग सकता है [शब्द संरेखित] (http://wordaligned.org/articles/echo) पर सजावटी चित्रकारी का। –