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

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

एक वस्तु को हैश करने योग्य कहा जाता है यदि उसके पास हैश मान है जो उसके जीवनकाल के दौरान समान रहता है। इसकी एक __hash__() विधि है और इसकी तुलना अन्य वस्तुओं से की जा सकती है। इसके लिए इसे __eq__() या __cmp__() विधि की आवश्यकता होती है। यदि हैश करने योग्य वस्तुएँ तुलना करने पर समान होती हैं, तो उनका हैश मान समान होता है।

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

पायथन में सभी अपरिवर्तनीय अंतर्निहित वस्तुएं धोने योग्य हैं। सूची और शब्दकोश जैसे परिवर्तनशील कंटेनर हैशेबल नहीं होते हैं जबकि अपरिवर्तनीय कंटेनर टपल हैशेबल होते हैं

ऑब्जेक्ट्स जो उपयोगकर्ता द्वारा परिभाषित कक्षाओं के उदाहरण हैं, डिफ़ॉल्ट रूप से धोने योग्य हैं; वे सभी असमान (स्वयं को छोड़कर) की तुलना करते हैं, और उनका हैश मान उनकी आईडी () से प्राप्त होता है।

हैश जाहिरा तौर पर फ़ंक्शन की आईडी नहीं है:दिए गए लैम्ब्डा फ़ंक्शन पर विचार करें।

उदाहरण

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 स्टेटमेंट का उपयोग करते हैं, या जब आप लैम्ब्डा एक्सप्रेशन का उपयोग करते हैं, तो Python आपके लिए फंक्शन ऑब्जेक्ट बनाता है: हम फंक्शन ऑब्जेक्ट को एट्रिब्यूट असाइन कर सकते हैं और उन्हें निम्नानुसार पुनः प्राप्त कर सकते हैं उदाहरण def foo(): pass foo.score = 20 print(type(foo)) print(foo.score

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

    पायथन प्रथम श्रेणी के कार्यों का समर्थन करता है। वास्तव में, पायथन में सभी कार्य प्रथम श्रेणी के कार्य हैं। पायथन फ़ंक्शन से फ़ंक्शन वापस कर सकता है, कार्यों को सूचियों जैसे संग्रह में संग्रहीत कर सकता है और आम तौर पर उनके साथ वैसा ही व्यवहार कर सकता है जैसा आप किसी भी चर या वस्तु के साथ करते हैं।