एक वस्तु को हैश करने योग्य कहा जाता है यदि उसके पास हैश मान है जो उसके जीवनकाल के दौरान समान रहता है। इसकी एक __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
इससे पता चलता है कि कोई भी फंक्शन हैशेबल होता है क्योंकि इसका हैश वैल्यू अपने पूरे जीवनकाल में समान रहता है।