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