2012-09-20 19 views
5

मैं अक्सर तीसरे पक्ष के पुस्तकालयों - पैकेज और मॉड्यूल का उपयोग करके खुद को ढूंढता हूं - जिसमें पर्याप्त दस्तावेज नहीं है। इसलिए स्रोत कोड का अध्ययन करना आवश्यक हो जाता है, लेकिन कुछ हद तक कठिन कार्य भी हो सकता है। मैं (जैसा कि मुझे लगता है कि सभी) dir() और help() कार्य शुरू करने के लिए उपयोग करें और हाल ही में मैंने inspect मॉड्यूल का उपयोग करना शुरू कर दिया है। मैं जानना चाहता हूं कि "विधियों" क्या हैं जिनका उपयोग आप बुरी तरह से प्रलेखित कोड में गोता लगाने के लिए करते हैं और ऐसा करने में दक्षता कैसे बढ़ा सकते हैं। बहुत सराहना में मदद करें।पायथन: व्यावहारिक आत्मनिरीक्षण

उत्तर

5

मुझे इस प्रकार के कार्य के लिए IPython अनिवार्य लगता है। ? (शो डॉकस्ट्रिंग) और ?? (शो स्रोत) जादू आदेश, आईपीथॉन की उत्कृष्ट समापन प्रणाली और लाइव ऑब्जेक्ट आत्मनिरीक्षण के साथ वास्तव में मेरे लिए एक अंतर बनाते हैं।

एक उदाहरण सत्र:

In [1]: import sphinx.writers <TAB> 
# see available modules and packages - narrow down 

In [1]: import shpinx.writers.manpage as manpage 
In [2]: manpage.<TAB> 
# list and complete on the module's contents 

In [3]: manpage.Writer? 
# nicely formatted docstring follows 

In [4]: manpage.Writer?? 
# nicely formatted source code follows 

In [5]: %edit manpage 
# open module in editor 
# it really helps if you use something like ctags at this point 

In [6]: %edit manpage.Writer 
# open module in editor - jump to class Writer 

दुर्भाग्य से, सभी कोड इस तरह से निरीक्षण किया जा सकता है। परियोजनाओं के बारे में सोचें कि को मॉड्यूल में if __name__ == '__main__' में लपेटे बिना या जादू पर भारी भरोसा करने वाली परियोजनाओं (sh दिमाग में आता है) करते हैं।

+1

@ gvalkov - IPython के लिए +1। – root

2

मैं http://pycallgraph.slowchop.com/ या डॉक्सिजन के साथ कॉलग्राफ बनाना चाहता हूं।

वास्तव में, AST मॉड्यूल और कुछ अन्य अपेक्षाकृत दर्द रहित सांख्यिकीय विश्लेषण की अनुमति देते हैं। मैं और अधिक चाहता हूं कि किसी भी तरह से गतिशील विश्लेषण करें (क्योंकि, जिसे "func1" कहा जाता है उसका मूल्य बदल सकता है और कॉल पूरी तरह अलग हो सकती हैं)।

+0

@ बॉब - + 1, इसके बारे में नहीं सुना था, दिलचस्प लगता है। धन्यवाद। – root

+0

@root: समस्या यह है कि स्थिर कॉलग्राफ पाइथन जैसे गतिशील भाषा के लिए अपर्याप्त हो सकता है :( –

संबंधित मुद्दे