Metode hash () atgriež objekta jaukšanas vērtību, ja tāda ir.
Hash vērtības ir tikai veseli skaitļi, kurus izmanto, lai ātri meklētu vārdnīcas taustiņus vārdnīcas taustiņos.
Iekšēji hash()metode izsauc __hash__()objekta metodi, kas pēc noklusējuma ir iestatīta jebkuram objektam. Mēs to apskatīsim vēlāk.
Metodes sintakse hash()ir:
hash (objekts)
hash () parametri
hash() metode prasa vienu parametru:
- objekts - objekts, kura hash vērtība ir jāatdod (vesels skaitlis, virkne, pludiņš)
 
Atgriezeniskā vērtība no hash ()
hash() metode atgriež objekta jaukšanas vērtību, ja tāda ir.
Ja objektam ir pielāgota __hash__()metode, tas saīsina atgriešanās vērtību līdz Py_ssize_t.
1. piemērs: Kā hash () darbojas Python?
 # hash for integer unchanged print('Hash for 181 is:', hash(181)) # hash for decimal print('Hash for 181.23 is:',hash(181.23)) # hash for string print('Hash for Python is:', hash('Python'))
Rezultāts
Hash for 181 is: 181 Hash for 181.23 is: 530343892119126197 Hash for Python is: 2230730083538390373
2. piemērs: hash () nemainīgam dubultā objektam?
hash() metode darbojas tikai nemainīgiem objektiem kā dubultā.
 # tuple of vowels vowels = ('a', 'e', 'i', 'o', 'u') print('The hash is:', hash(vowels))
Rezultāts
Hash ir: -695778075465126279
Kā hash () darbojas pielāgotajiem objektiem?
Kā minēts iepriekš, hash()metode iekšēji izsauc __hash__()metodi. Tātad jebkurš objekts var ignorēt __hash__()pielāgotās jaukšanas vērtības.
Bet pareizai hash ieviešanai __hash__()vienmēr jāatgriež vesels skaitlis. Un, gan __eq__()un __hash__()metodēm ir jāievieš.
Tālāk ir norādīti pareizi __hash__()ignorēšanas gadījumi .
| __eq __ () | __hash __ () | Apraksts | 
|---|---|---|
| Definēts (pēc noklusējuma) | Definēts (pēc noklusējuma) | Ja atstāj tādu, kāds tas ir, visi objekti salīdzina nevienlīdzīgu (izņemot sevi) | 
| (Ja maināms) Definēts | Nevajadzētu definēt | Jaucamās kolekcijas ieviešana prasa, lai atslēgas jaukšanas vērtība būtu nemainīga | 
| Nav definēts | Nevajadzētu definēt | Ja __eq__()tas nav definēts, to __hash__()nevajadzētu definēt. |  
| Definēts | Nav definēts | Klases gadījumi nebūs izmantojami kā jaucama kolekcija. __hash __ () implicititāte ir iestatīta uz None. Palielina TypeErrorizņēmumu, ja mēģina izgūt hash. |  
| Definēts | Saglabāt no vecākiem | __hash__ = .__hash__ |  
| Definēts | Negrib jaukt | __hash__ = None. Paaugstina TypeError izņēmumu, ja mēģina izgūt hash. |  
3. piemērs: hash () pielāgotajiem objektiem, aizstājot __hash __ ()
 class Person: def __init__(self, age, name): self.age = age self.name = name def __eq__(self, other): return self.age == other.age and self.name == other.name def __hash__(self): print('The hash is:') return hash((self.age, self.name)) person = Person(23, 'Adam') print(hash(person))
Rezultāts
Hash ir: 3785419240612877014
Piezīme: jums nav jāievieš __eq__()hash metode, jo tā pēc noklusējuma tiek izveidota visiem objektiem.








