खोज…


किसी फ़ंक्शन का बायटेकोड प्रदर्शित करें

पायथन इंटरप्रिटर कोड को पायथन के वर्चुअल मशीन पर क्रियान्वित करने से पहले कोड को बाइटकोड में संकलित करता है (यह भी देखें कि पायथन बाइटकोड क्या है?)

यहां देखें कि पायथन फ़ंक्शन के बाइटकोड को कैसे देखें

import dis

def fib(n):
    if n <= 2: return 1
    return fib(n-1) + fib(n-2)

# Display the disassembled bytecode of the function.
dis.dis(fib)

dis.dis मॉड्यूल में फ़ंक्शन dis.dis , इसके पास दिए गए फ़ंक्शन के dis.dis को वापस कर देगा।

किसी फ़ंक्शन के कोड ऑब्जेक्ट की खोज करना

CPython फ़ंक्शन ऑब्जेक्ट के लिए कोड ऑब्जेक्ट तक पहुंचने की अनुमति देता है।

__code__ ऑब्जेक्ट में __code__ के कच्चे बाइटकोड ( co_code ) के साथ-साथ अन्य जानकारी जैसे स्थिरांक और चर नाम शामिल हैं।

def fib(n):
    if n <= 2: return 1
    return fib(n-1) + fib(n-2)
dir(fib.__code__)

def fib(n):
    if n <= 2: return 1
    return fib(n-1) + fib(n-2)
dir(fib.__code__)

किसी ऑब्जेक्ट का स्रोत कोड प्रदर्शित करें

ऐसी वस्तुएँ जो बिल्ट-इन नहीं हैं

पायथन ऑब्जेक्ट का स्रोत कोड प्रिंट करने के लिए inspect उपयोग करें। ध्यान दें कि यह बिल्ट-इन ऑब्जेक्ट्स के लिए और न ही इंटरेक्टिवली परिभाषित वस्तुओं के लिए काम करेगा। इनके लिए आपको बाद में बताए गए अन्य तरीकों की आवश्यकता होगी।

यहाँ कैसे विधि के स्रोत कोड मुद्रित करने के लिए है randint से random मॉड्यूल:

import random
import inspect

print(inspect.getsource(random.randint)) 
# Output:
#    def randint(self, a, b):
#        """Return random integer in range [a, b], including both end points.
#        """
#
#        return self.randrange(a, b+1)

प्रलेखन स्ट्रिंग को प्रिंट करने के लिए

print(inspect.getdoc(random.randint))
# Output:
# Return random integer in range [a, b], including both end points.

उस फ़ाइल का पूरा पथ प्रिंट करें जहाँ विधि random.randint परिभाषित है:

print(inspect.getfile(random.randint))
# c:\Python35\lib\random.py
print(random.randint.__code__.co_filename) # equivalent to the above
# c:\Python35\lib\random.py

वस्तुओं को अंतःक्रियात्मक रूप से परिभाषित किया गया

यदि ऑब्जेक्ट को परिभाषित किया जाता है तो इंटरेक्टिव रूप से inspect स्रोत कोड प्रदान नहीं कर सकता है लेकिन आप इसके बजाय dill.source.getsource उपयोग कर सकते हैं

# define a new function in the interactive shell
def add(a, b):
   return a + b
print(add.__code__.co_filename) # Output: <stdin> 

import dill
print dill.source.getsource(add)
# def add(a, b):
      return a + b

निर्मित वस्तुओं

पायथन के अंतर्निहित कार्यों का स्रोत कोड सी में लिखा गया है और इसे केवल पायथन के स्रोत कोड ( मर्क्यूरियल पर होस्ट किया गया या https://www.python.org/downloads/source/) से देखा जा सकता है।

print(inspect.getsource(sorted)) # raises a TypeError
type(sorted) # <class 'builtin_function_or_method'>


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow