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