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

पायथन फंक्शन्स हैशेबल क्यों और कैसे हैं?

एक ऑब्जेक्ट को हैशेबल कहा जाता है यदि इसका एक हैश मान होता है जो इसके जीवनकाल के दौरान समान रहता है। इसमें __hash__() मेथड होता है और इसकी तुलना अन्य ऑब्जेक्ट्स से की जा सकती है। इसके लिए, इसे __eq__() या __cmp__() मेथड की आवश्यकता होती है। यदि हैशेबल ऑब्जेक्ट्स तुलना में समान हैं, तो उनका हैश मान समान होता है।

हैशेबल होने से एक ऑब्जेक्ट डिक्शनरी कुंजी और सेट सदस्य के रूप में उपयोग करने योग्य हो जाता है क्योंकि ये डेटा संरचनाएं आंतरिक रूप से हैश मानों का उपयोग करती हैं।

पायथन में सभी इम्यूटेबल बिल्ट-इन ऑब्जेक्ट्स हैशेबल हैं। म्यूटेबल कंटेनर्स जैसे सूचियाँ और डिक्शनरी हैशेबल नहीं हैं जबकि इम्यूटेबल कंटेनर टपल हैशेबल है।

यूज़र-डिफाइंड क्लासेस के इंस्टेंस डिफ़ॉल्ट रूप से हैशेबल होते हैं; वे सभी असमान तुलना करते हैं (स्वयं को छोड़कर), और उनका हैश मान उनके id() से प्राप्त होता है।

हैश स्पष्ट रूप से फंक्शन की ID नहीं है: दिए गए लैम्ब्डा फंक्शन पर विचार करें।

उदाहरण

m = lambda x: 1
print hash(m)
print id(m)
print m.__hash__()

आउटपुट

1265925722 3074942372 1265925722

यह दर्शाता है कि लैम्ब्डा फंक्शन्स हैशेबल हैं।

उदाहरण

अब दिए गए फंक्शन f() पर विचार करें:

def f():pass
print type(f)
print f.__hash__()
print hash(f)

आउटपुट

<type 'function'> 1265925978 1265925978

यह दर्शाता है कि कोई भी फंक्शन हैशेबल है क्योंकि इसका एक हैश मान होता है जो इसके जीवनकाल में समान रहता है।

  1. हैश फंक्शन्स और हैश टेबल्स हैश फंक्शन्स और हैश टेबल्स

    परिचय हैशिंग एक टेक्स्ट या संख्याओं की सूची से गणितीय फंक्शन का उपयोग करके मान उत्पन्न करने की प्रक्रिया है जिसे हैश फंक्शन के रूप में जाना जाता है। कई हैश फंक्शन हैं जो संख्यात्मक या अल्फान्यूमेरिक कुंजियों का उपयोग करते हैं। विभिन्न हैश फंक्शन नीचे दिए गए हैं: हैश फंक्शन्स निम्नलिखित कुछ हैश फंक

  1. - क्या पायथन फंक्शन्स ऑब्जेक्ट्स हैं?

    पायथन आपके लिए फंक्शन ऑब्जेक्ट्स बनाता है जब आप def स्टेटमेंट का उपयोग करते हैं, या जब आप lambda एक्सप्रेशन का उपयोग करते हैं: हम फंक्शन ऑब्जेक्ट को एट्रिब्यूट्स असाइन कर सकते हैं और उन्हें पुनः प्राप्त कर सकते हैं: उदाहरण def foo(): pass foo.score = 20 print(type(foo)) print(foo.score) print(type(l

  1. - पायथन फंक्शन फंक्शन कैसे लौटा सकता है?

    पायथन फर्स्ट-क्लास फंक्शन्स का समर्थन करता है। वास्तव में, पायथन में सभी फंक्शन्स फर्स्ट-क्लास फंक्शन्स हैं। पायथन फंक्शन्स से फंक्शन्स लौटा सकता है, फंक्शन्स को सूचियों जैसे संग्रह में स्टोर कर सकता है और आम तौर पर उन्हें किसी भी वेरिएबल या ऑब्जेक्ट की तरह व्यवहार कर सकता है। फंक्शन्स के अंदर फंक्श