2012-10-24 21 views
6

के माध्यम से पाइथन सुविधाओं और व्यवहार का पता लगाना शुरू करने का प्रयास करना मैं पाइथन स्रोत कोड के माध्यम से जांच और पता लगाने में सक्षम होना चाहता हूं कि यह देखने के लिए कि चीजें कैसे काम करती हैं, और उन सुविधाओं के बारे में संदेह हल करने के लिए जो स्पष्ट रूप से दस्तावेज नहीं हैं संदर्भ दस्तावेज़ में।स्रोत कोड

मैं इस बारे में कुछ प्रारंभिक जानकारी लेना चाहता हूं कि यह कैसे जाना है, क्योंकि यह बहुत जबरदस्त है। मैं सी पढ़ सकता हूं, इसलिए मेरे पास यह चल रहा है। इसके अलावा, कार्य कम से कम थोड़ी सी मार्गदर्शन के बिना थोड़ा डरावना लगता है।

उदाहरण के लिए, मान लीजिए कि मैं दस्तावेज़ बनाना चाहता हूं कि पाइथन में विशेषता संदर्भ कैसे लागू किया गया है। एक पाइथन प्रोग्राम में एक विशेषता संदर्भ अभिव्यक्ति मौजूद होने पर क्या होता है, यह जानने के लिए मैं कैसे जाउंगा?

शायद स्रोत कोड कैसे व्यवस्थित किया गया है और प्रत्येक भाग क्या करता है, इसके साथ-साथ "विशेषता संदर्भ" केस जैसे कुछ "चलने = थ्रू" उदाहरणों के साथ उपयोगी होगा।

मैंने इस पर जानकारी की खोज की लेकिन ऐसा लगता है कि बहुत कुछ नहीं लगता है।

उत्तर

1

शायद एक अच्छा पायथन डीबगर मदद करेगा? मैं PyDev plugin for Eclipse का उपयोग करने का प्रयास करूंगा। इससे कम से कम आपको पता लगाने में मदद मिलेगी कि विशेष पाइथन विधियों (जैसे __getattr__() या __setattr__()) को क्लास की विशेषता का संदर्भ देने पर कॉल किया जाता है। यदि आपको गहराई से जाना है, तो आप Python C API या यहां तक ​​कि Python C Source Code देख सकते हैं।

+0

ओपी अजगर सी सूत्रों के एक परिचय के बारे में पूछ रहा है! – XORcist

+0

धन्यवाद, मैंने इसके लिए डीबगर का उपयोग करने के बारे में सोचा नहीं था। मैं इस संभावना पर एक नज़र डालेगा (हालांकि फिलहाल मैं ग्रहण का उपयोग नहीं कर रहा हूं।) सी एपीआई और स्रोत कोड के लिए, यह निश्चित रूप से आदर्श होगा। बस इसके साथ शुरू करने के लिए कम से कम दर्दनाक तरीका ढूंढ रहे हैं (क्या ऐसा कुछ भी है?) –

+2

ऐसा लगता है कि आप सी स्रोत स्तर पर [पाइथन के साथ जीडीबी] का उपयोग करके डीबग कर सकते हैं (http://wiki.python.org/moin/डीबगिंग WithGdb) – Josh

1

पायथन मानक पुस्तकालय में एक ट्रेस मॉड्यूल है। यह कई तरीके हैं, और अजगर कोड के प्रत्येक पंक्ति के रूप में यह इस तरह क्रियान्वित किया जाता है मुद्रित करने के लिए इस्तेमाल किया जा सकता:

python -m trace -t myscript.py 

देखें http://docs.python.org/library/trace.html

+0

यह उत्कृष्ट है, धन्यवाद। मैं इसे तुरंत देख रहा हूं और देख सकता हूं कि मैं इसके साथ कौन सी जानकारी एकत्र कर सकता हूं। मेरे अंदर जुनूनी बाध्यकारी अभी भी जानना चाहेगा कि कोड को अंत में कैसे खोला जा सकता है। यकीन नहीं है कि यह एक व्यावहारिक प्रयास होगा, लेकिन मैं इसे मजेदार के लिए देख सकता हूं। –

+0

इसे आज़माएं। यह निश्चित रूप से उपयोगी है, लेकिन मुझे यकीन नहीं है कि इसमें आवश्यक स्तर की जानकारी है। उदाहरण के लिए, मुझे पाइथन विशेष विधि कॉल नहीं मिल रही है (जैसे किसी ऑब्जेक्ट को तत्काल चालू करना और आगे।) शायद एक विकल्प है जिसे आप इस के लिए ट्रेस में सेट कर सकते हैं हालांकि मुझे तुरंत एक नहीं देखा गया। मैं एक नजर मार लूगां। –

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