Python hash() metode
Python hash() funktion er en indbygget funktion og returnerer hashværdien af et objekt, hvis det har en. Hashværdien er et heltal, der bruges til hurtigt at sammenligne ordbogsnøgler, mens du ser på en ordbog .
Python hash() funktion Syntaks
Syntaks: hash(objekt)
Parametre: obj: Objektet, som vi skal konvertere til hash.
Vender tilbage : Returnerer den hash-værdi, hvis det er muligt.
Egenskaber for hash() funktion
- Objekter, der er hashgjort ved hjælp af hash() er irreversible, hvilket fører til tab af information.
- hash() returnerer kun hashed værdi for uforanderlige objekter, og kan derfor bruges som en indikator til at kontrollere for foranderlige/uforanderlige objekter.
- Vi kan kode data til sikkerhed i Python ved at bruge hash() funktion.
Python hash() Funktionseksempler
Eksempel 1: Demonstrer funktion af hash()
I dette eksempel bruger vi hash()-funktionen til at udskrive heltal-, streng- og float-hashværdien ved hjælp af 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)))> |
Produktion
The integer hash value is : 4 The string hash value is : 4349415460800802357 The float hash value is : 1291272085159665688
Eksempel 2: Demonstrer egenskaben for hash()
Denne Python-kode demonstrerer, hvordan hash()> funktion opfører sig med uforanderlige og foranderlige objekter . Den initialiserer først en tuple og en liste med de samme elementer. Koden udskriver hashværdien af tuple. Men når den forsøger at udskrive listens hashværdi, som kan ændres, hæver den en TypeError> fordi foranderlige objekter som lister ikke kan hash 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)))> |
Produktion:
The tuple hash value is : 8315274433719620810
Undtagelser:
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 uforanderligt Tuple-objekt
Denne Python-kode initialiserer en tuple ved navn var> indeholdende tegnene 'G', 'E', 'E' og 'K'. Det hash()> funktion bruges til at generere en hashværdi for tuple var> . I dette tilfælde udskriver koden hashværdien af tuple, som er et unikt heltal, der repræsenterer tuple baseret på dens indhold og struktur.
Python3
# hash() for immutable tuple object> var> => (> 'G'> ,> 'E'> ,> 'E'> ,> 'K'> )> print> (> hash> (var))> |
Produktion
3843673861956289951
Eksempel 4: hash() på den M anvendelig Objekt
hash() metode brugt af et uforanderligt objekt, hvis vi bruger dette på et foranderligt objekt som list, set, ordbøger, vil det generere en fejl.
Python3
l> => [> 1> ,> 2> ,> 3> ,> 4> ]> print> (> hash> (l))> |
Produktion
TypeError: unhashable type: 'list'
Eksempel 5: hash() på et brugerdefineret objekt
Her vil vi tilsidesætte __hash()__-metoderne for at kalde hash(), og __eq__()-metoden vil kontrollere ligheden mellem de to brugerdefinerede objekter.
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))> |
Produktion
The hash is: 7627717261227283506 The hash is: 7627717261227283506