2011-12-22 8 views
67

संभव डुप्लिकेट:
About python's built in sort() methodअंतर्निहित पायथन कार्यों के लिए स्रोत कोड ढूँढना?

वहाँ कैसे काम करता है में बनाया गया अजगर में काम को देखने के लिए कोई तरीका है? मैं क्या मतलब है न सिर्फ उनके उपयोग का तरीका, लेकिन यह भी कैसे कर रहे थे वे का निर्माण किया, क्या पीछे कोड अनुसार क्रमबद्ध या गणना आदि है ...?

उत्तर

71

चूंकि पायथन ओपन सोर्स है, इसलिए आप source code पढ़ सकते हैं।

यह जानने के लिए कि आप में कोई विशेष मॉड्यूल या फ़ंक्शन लागू किया गया है, आमतौर पर __file__ विशेषता प्रिंट कर सकते हैं। वैकल्पिक रूप से, आप inspect मॉड्यूल का उपयोग कर सकते हैं, के दस्तावेज़ में अनुभाग Retrieving Source Code देखें।

अंतर्निहित कक्षाओं और विधियों के लिए यह inspect.getfile और inspect.getsource के बाद से इतना आसान नहीं है क्योंकि ऑब्जेक्ट अंतर्निहित है, यह बताते हुए एक प्रकार की त्रुटि लौटाएगी। हालांकि, कई अंतर्निर्मित प्रकार Objects sub-directory of the Python source trunk में पाए जा सकते हैं। उदाहरण के लिए, list प्रकार के कार्यान्वयन के लिए अंकन वर्ग या here के कार्यान्वयन के लिए here देखें।

+0

क्या आप 'एन्युमरेट' के साथ एक उदाहरण दे सकते हैं? – Benjamin

+2

आप जिस तरह से अंतर्निहित अंतर्निहित परीक्षण किया जा सकता है [यहां] (http://hg.python.org/cpython/file/b36cb4602e21/Lib/test/test_enumerate.py)। – Makoto

+3

एन्युमरेट कोड [यहां] है (http://svn.python.org/view/python/trunk/Objects/enumobject.c?view=markup) –

14

iPython खोल यह आसान बनाता है: function? आपको दस्तावेज़ीकरण देगा। function?? कोड भी दिखाता है। लेकिन यह केवल शुद्ध पायथन कार्यों के लिए काम करता है।

फिर आप हमेशा (0) पायथन के लिए स्रोत कोड download कर सकते हैं।

यदि आप कोर कार्यक्षमता के पाइथोनिक कार्यान्वयन में रुचि रखते हैं तो PyPy स्रोत पर एक नज़र डालें।

+1

पीईपीई अधिकांश अंतर्निर्मित सामानों के लिए RPython का उपयोग करता है, जो सी के रूप में कम स्तर के रूप में लगभग पाइथन के रूप में उच्च स्तर के रूप में हो सकता है। आमतौर पर यह बीच में है। किसी भी मामले में यह स्थाई रूप से टाइप किया गया है, इसलिए यह वास्तव में पायथन नहीं है। – delnan

+0

बिल्टिन फ़ंक्शन के स्रोत कोड देखने के लिए प्रारंभिक प्रोजेक्ट देखें: https://github.com/punchagan/cinspect – Thomas

20

यहाँ @Chris 'जवाब के पूरक के लिए एक रसोई की किताब जवाब है, CPython GitHub के लिए ले जाया गया है और मर्क्युरियल रेपो अब अपडेट किए जाएंगे:

  1. स्थापित Git यदि आवश्यक हो तो।
  2. git clone https://github.com/python/cpython.git

  3. कोड उप-निर्देशिका cpython कहा जाता है के लिए चेकआउट होगा ->cd cpython

  4. मान लीजिए कि हम print() की परिभाषा के लिए देख रहे हैं ...
  5. egrep --color=always -R 'print' | less -R
  6. अहा! Python/bltinmodule.c देखें ->builtin_print()

आनंद लें।

4

आप बिल्टिन फ़ंक्शंस के साथ-साथ इसके कोड के बारे में सहायता प्राप्त करने के लिए बस help() कमांड का उपयोग कर सकते हैं।

उदाहरण के लिए

: अगर आप str() के लिए कोड देखना चाहते हैं, बस टाइप - help(str)

इसे इस तरह वापस आ जाएगी,

>>> help(str) 
Help on class str in module __builtin__: 

class str(basestring) 
| str(object='') -> string 
| 
| Return a nice string representation of the object. 
| If the argument is a string, the return value is the same object. 
| 
| Method resolution order: 
|  str 
|  basestring 
|  object 
| 
| Methods defined here: 
| 
| __add__(...) 
|  x.__add__(y) <==> x+y 
| 
| __contains__(...) 
|  x.__contains__(y) <==> y in x 
| 
| __eq__(...) 
|  x.__eq__(y) <==> x==y 
| 
| __format__(...) 
|  S.__format__(format_spec) -> string 
| 
|  Return a formatted version of S as described by format_spec. 
| 
| __ge__(...) 
|  x.__ge__(y) <==> x>=y 
| 
| __getattribute__(...) 
-- More -- 
2

enter image description here

मैं खुदाई करने के लिए किया था निम्नलिखित Built-in Functions के स्रोत को खोजने के लिए थोड़ा सा खोज के रूप में हजारों परिणाम मिलेगा। (गुड लक उन में से किसी के लिए खोज जहां यह स्रोत खोजने के लिए किया जाता है)

वैसे भी, उन सभी कार्यों bltinmodule.c कार्य में परिभाषित कर रहे हैं के साथ शुरू builtin_{functionname}

निर्मित स्रोत: https://github.com/python/cpython/blob/master/Python/bltinmodule.c

2

काफी अज्ञात संसाधन पायथन Developer Guide है।

हाल ही में जीएच issue में, एक नया अध्याय जोड़ा गया था: CPython Source Code Layout। अगर कुछ बदलना चाहिए, तो वह संसाधन भी अपडेट हो जाएगा।

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