Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन कोड ऑब्जेक्ट्स (Code Objects): निम्न-स्तरीय विवरण

कोड ऑब्जेक्ट क्या है?

कोड ऑब्जेक्ट CPython कार्यान्वयन का निम्न-स्तरीय विवरण है। यह निष्पादन योग्य कोड का एक टुकड़ा दर्शाता है जो अभी तक फ़ंक्शन में बंधा नहीं है। कोड ऑब्जेक्ट स्वयं सीधे कॉल करने योग्य नहीं हैं; उन्हें निष्पादित करने के लिए exec() या eval() का उपयोग करना पड़ता है।

कोड ऑब्जेक्ट बनाना और निरीक्षण करना

code_str = '''
print("Hello Code Objects")
'''

# कोड ऑब्जेक्ट कंपाइल करें
code_obj = compile(code_str, '', 'exec')

print("कोड ऑब्जेक्ट:", code_obj)
print("\nएट्रिब्यूट्स:")
for attr in dir(code_obj):
    if not attr.startswith('__'):
        print(f"  {attr}")

print(f"\nफाइलनाम: {code_obj.co_filename}")
print(f"पहला बाइटकोड: {code_obj.co_code}")
print(f"चर नाम: {code_obj.co_varnames}")
print(f"कॉन्स्टेंट्स: {code_obj.co_consts}")
print(f"आर्गुमेंट काउंट: {code_obj.co_argcount}")

आउटपुट

कोड ऑब्जेक्ट:  at 0x..., file "", line 2>

एट्रिब्यूट्स:
  co_argcount
  co_cellvars
  co_code
  co_consts
  co_filename
  co_firstlineno
  co_flags
  co_freevars
  co_lnotab
  co_name
  co_names
  co_nlocals
  co_stacksize
  co_varnames
  replace

फाइलनाम: 
पहला बाइटकोड: b'e\x00d\x00\x83\x01\x01\x00d\x01S\x00'
चर नाम: ()
कॉन्स्टेंट्स: (None, 'Hello Code Objects')
आर्गुमेंट काउंट: 0

मुख्य एट्रिब्यूट्स

एट्रिब्यूटविवरण
co_codeरॉ बाइटकोड निर्देश
co_constsकोड में उपयोग किए गए कॉन्स्टेंट्स (स्ट्रिंग्स, नंबर, नेस्टेड कोड ऑब्जेक्ट्स)
co_namesउपयोग किए गए नाम (वेरिएबल, फंक्शन नाम)
co_varnamesस्थानीय वेरिएबल नाम
co_argcountपोजिशनल आर्गुमेंट्स की संख्या
co_flagsबिट फ्लैग्स (जेनरेटर, नेस्टेड स्कोप आदि)

कोड ऑब्जेक्ट निष्पादित करना

exec(code_obj)  # Hello Code Objects प्रिंट करेगा

नोट: सामान्य प्रोग्रामिंग में सीधे कोड ऑब्जेक्ट्स से इंटरैक्ट करने की कम आवश्यकता होती है। ये मुख्य रूप से डीबगर्स, प्रोफाइलर्स, और कंपाइलर टूल्स के लिए उपयोगी हैं।

  1. पायथन में फाइल ऑब्जेक्ट्स: पूरी गाइड पायथन में फाइल ऑब्जेक्ट्स: पूरी गाइड

    पायथन में, जब भी हम फाइल्स पढ़ने या लिखने का प्रयास करते हैं, हमें कोई लाइब्रेरी इम्पोर्ट करने की आवश्यकता नहीं होती क्योंकि यह नेटिवली हैंडल किया जाता है। सबसे पहली चीज जो हम करेंगे वह है बिल्ट-इन open फंक्शन का उपयोग करके एक फाइल ऑब्जेक्ट प्राप्त करना। open फंक्शन एक फाइल खोलता है और एक फाइल ऑब्ज

  1. - पायथन में टाइमटपल क्या है?

    datetime.date इंस्टेंसेज का timetuple() मेथड time.struct_time टाइप का ऑब्जेक्ट लौटाता है। struct_time एक नेम्ड टपल ऑब्जेक्ट है (एक नेम्ड टपल ऑब्जेक्ट में एट्रिब्यूट्स होते हैं जिन्हें इंडेक्स या नाम से एक्सेस किया जा सकता है)। struct_time ऑब्जेक्ट में डेट और टाइम फील्ड्स दोनों को दर्शाने के लिए एट

  1. - पायथन ऑब्जेक्ट्स से सोर्स कोड कैसे प्राप्त करें?

    हम फंक्शन का सोर्स कोड प्राप्त करने के लिए inspect मॉड्यूल के getsource() मेथड का उपयोग करते हैं। inspect.getsource(object) किसी ऑब्जेक्ट के लिए सोर्स कोड का टेक्स्ट लौटाता है। आर्गुमेंट मॉड्यूल, क्लास, मेथड, फंक्शन, ट्रेसबैक, फ्रेम, या कोड ऑब्जेक्ट हो सकता है। सोर्स कोड एकल स्ट्रिंग के रूप में लौटा