Python hash() metode
Python hash() funksjon er en innebygd funksjon og returnerer hash-verdien til et objekt hvis det har en. Hash-verdien er et heltall som brukes til raskt å sammenligne ordboknøkler mens du ser på en ordbok .
Python hash() funksjon Syntaks
Syntaks: hasj (obj)
Parametere: obj: Objektet som vi trenger for å konvertere til hasj.
Returnerer: Returnerer den hashed verdien hvis mulig.
Egenskaper for hash()-funksjonen
- Objekter som hash() er irreversible, noe som fører til tap av informasjon.
- hash() returnerer hash-verdi bare for uforanderlige objekter, og kan derfor brukes som en indikator for å se etter mutbare/uforanderlige objekter.
- Vi kan kode data for sikkerhet i Python ved å bruke hash()-funksjonen.
Python hash() funksjonseksempler
Eksempel 1: Demonstrere at hash() fungerer
I dette eksemplet bruker vi hash()-funksjonen til å skrive ut heltalls-, streng- og float-hash-verdien ved å bruke hash() i Python .
Python3
# initializing objects> int_val> => 4> str_val> => 'techcodeview.com'> flt_val> => 24.56> # Printing the hash values.> # Notice Integer value doesn't change> # You'll have answer later in article.> print> (> 'The integer hash value is : '> +> str> (> hash> (int_val)))> print> (> 'The string hash value is : '> +> str> (> hash> (str_val)))> print> (> 'The float hash value is : '> +> str> (> hash> (flt_val)))> |
Produksjon
The integer hash value is : 4 The string hash value is : 4349415460800802357 The float hash value is : 1291272085159665688
Eksempel 2: Demonstrerer egenskapen til hash()
Denne Python-koden viser hvordan hash()> funksjonen oppfører seg med uforanderlige og foranderlige objekter . Den initialiserer først en tuppel og en liste med de samme elementene. Koden skriver ut hash-verdien til tuppelen. Men når den prøver å skrive ut hash-verdien til listen, som kan endres, øker den en TypeError> fordi mutbare objekter som lister ikke kan hashes direkte.
Python3
# initializing objects> # tuple are immutable> tuple_val> => (> 1> ,> 2> ,> 3> ,> 4> ,> 5> )> # list are mutable> list_val> => [> 1> ,> 2> ,> 3> ,> 4> ,> 5> ]> # Printing the hash values.> # Notice exception when trying> # to convert mutable object> print> (> 'The tuple hash value is : '> +> str> (> hash> (tuple_val)))> print> (> 'The list hash value is : '> +> str> (> hash> (list_val)))> |
Produksjon:
The tuple hash value is : 8315274433719620810
Unntak:
Traceback (most recent call last): File '/home/eb7e39084e3d151114ce5ed3e43babb8.py', line 15, in print ('The list hash value is : ' + str(hash(list_val))) TypeError: unhashable type: 'list' Eksempel 3: hash() for uforanderlig tuppelobjekt
Denne Python-koden initialiserer en tuppel som heter var> som inneholder tegnene «G», «E», «E» og «K». De hash()> funksjonen brukes til å generere en hash-verdi for tuppelen var> . I dette tilfellet skriver koden ut hash-verdien til tuppelen, som er et unikt heltall som representerer tuppelen basert på dens innhold og struktur.
Python3
# hash() for immutable tuple object> var> => (> 'G'> ,> 'E'> ,> 'E'> ,> 'K'> )> print> (> hash> (var))> |
Produksjon
3843673861956289951
Eksempel 4: hash() på M brukbart objekt
hash()-metoden brukt av ett uforanderlig objekt, hvis vi bruker dette på et mutbart objekt som liste, sett, ordbøker, vil det generere en feil.
Python3
l> => [> 1> ,> 2> ,> 3> ,> 4> ]> print> (> hash> (l))> |
Produksjon
TypeError: unhashable type: 'list'
Eksempel 5: hash() på et tilpasset objekt
Her vil vi overstyre __hash()__-metodene for å kalle hash(), og __eq__()-metoden vil sjekke likheten mellom de to egendefinerte objektene.
Python3
class> Emp:> > def> __init__(> self> , emp_name,> id> ):> > self> .emp_name> => emp_name> > self> .> id> => id> > def> __eq__(> self> , other):> > > # Equality Comparison between two objects> > return> self> .emp_name> => => other.emp_name> and> self> .> id> => => other.> id> > def> __hash__(> self> ):> > > # hash(custom_object)> > return> hash> ((> self> .emp_name,> self> .> id> ))> emp> => Emp(> 'Ragav'> ,> 12> )> print> (> 'The hash is: %d'> %> hash> (emp))> # We'll check if two objects with the same> # attribute values have the same hash> emp_copy> => Emp(> 'Ragav'> ,> 12> )> print> (> 'The hash is: %d'> %> hash> (emp_copy))> |
Produksjon
The hash is: 7627717261227283506 The hash is: 7627717261227283506