क्या किसी वेरिएबल की आईडी को डीरेफ़रेंस किया जा सकता है?
पायथन में, आईडी() फ़ंक्शन किसी ऑब्जेक्ट के लिए अद्वितीय पहचानकर्ता लौटाता है। इस पहचानकर्ता को एक वेरिएबल में संग्रहीत किया जा सकता है, लेकिन क्या इस वेरिएबल की आईडी को संदर्भित किया जा सकता है?
शैक्षणिक दृष्टिकोण से, उत्तर हां है। _ctypes मॉड्यूल एक फ़ंक्शन, PyObj_FromPtr() प्रदान करता है, जो एक पॉइंटर को पायथन ऑब्जेक्ट में परिवर्तित कर सकता है। इस फ़ंक्शन का उपयोग करके, हम एक वेरिएबल की आईडी को डीरेफ़रेंस करने के लिए एक उपयोगिता फ़ंक्शन बना सकते हैं:
import _ctypes
def di(obj_id):
""" Inverse of id() function. """
return _ctypes.PyObj_FromPtr(obj_id)
यह फ़ंक्शन वेरिएबल की आईडी को एक तर्क के रूप में लेता है और संबंधित ऑब्जेक्ट लौटाता है। उदाहरण के लिए:
a = 42
b = 'answer'
print(di(id(a))) # Output: 42
print(di(id(b))) # Output: answer
चेतावनी:
हालांकि यह तकनीक सैद्धांतिक रूप से संभव है, यह ध्यान रखना महत्वपूर्ण है कि इस पर विचार किया जाता है कुछ डेवलपर्स द्वारा असुरक्षित। _ctypes मॉड्यूल को C कोड के साथ इंटरेक्शन के लिए डिज़ाइन किया गया है, और Python ऑब्जेक्ट्स को डीरेफ़रेंस करने के लिए इसके उपयोग से अप्रत्याशित व्यवहार या अस्थिरता हो सकती है।
इसलिए, ऑब्जेक्ट्स तक पहुंचने के लिए अधिक व्यावहारिक तरीकों का उपयोग करने की सलाह दी जाती है, जैसे कि सीधे रेफरेंसिंग ऑब्जेक्ट स्वयं या ऑब्जेक्ट के बीच संबंध बनाए रखने के लिए पायथन के शब्दकोश और सूची डेटा संरचनाओं का उपयोग कर रहे हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3