logo

Python hash() metode

Python hash() funkcija ir iebūvēta funkcija un atgriež objekta jaucējvērtību, ja tāda ir. Jaucējvērtība ir vesels skaitlis, ko izmanto, lai ātri salīdzinātu vārdnīcas atslēgas, skatoties uz a vārdnīca .

Python hash() funkcija Sintakse

Sintakse : hash(obj)

Parametri: obj: Objekts, kas mums jāpārvērš par hash.



Atgriešanās: Ja iespējams, atgriež jaukto vērtību.

Funkcijas hash() īpašības

  • Objekti, kas sajaukti, izmantojot hash(), ir neatgriezeniski, kā rezultātā tiek zaudēta informācija.
  • hash() atgriež jaukto vērtību tikai nemaināmiem objektiem, tāpēc to var izmantot kā indikatoru, lai pārbaudītu mainīgus/nemainīgus objektus.
  • Mēs varam kodēt datus drošībai Python, izmantojot funkciju hash ().

Python hash() funkciju piemēri

1. piemērs: Hash() darbības demonstrēšana

Šajā piemērā mēs izmantojam funkciju hash(), lai izdrukātu veselu skaitli, virkni un peldošo jaucējvērtību, izmantojot hash() 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)))>

>

>

Izvade

The integer hash value is : 4 The string hash value is : 4349415460800802357 The float hash value is : 1291272085159665688>

2. piemērs: Hash() īpašības demonstrēšana

Šis Python kods parāda, kāhash()>funkcija uzvedas ar nemainīgi un mainīgi objekti . Vispirms tiek inicializēts kortežs un saraksts ar tiem pašiem elementiem. Kods veiksmīgi izdrukā kortedža jaucējvērtību. Tomēr, kad tas mēģina izdrukāt saraksta jaucējvērtību, kas ir mainīga, tas rada aTypeError>jo mainīgus objektus, piemēram, sarakstus, nevar tieši sajaukt.

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)))>

>

>

Izvade:

The tuple hash value is : 8315274433719620810>

Izņēmumi:

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'>

3. piemērs: hash() nemaināmam Korpusa objektam

Šis Python kods inicializē korteži ar nosaukumuvar>satur rakstzīmes “G”, “E”, “E” un “K”. Thehash()>funkcija tiek izmantota, lai ģenerētu jaucējvērtību korteivar>. Šajā gadījumā kods izdrukā kortedža jaucējvērtību, kas ir unikāls vesels skaitlis, kas attēlo korešu, pamatojoties uz tā saturu un struktūru.

Python3




# hash() for immutable tuple object> var>=> (>'G'>,>'E'>,>'E'>,>'K'>)> print>(>hash>(var))>

>

>

Izvade

3843673861956289951>

4. piemērs: hash() ieslēgts M izmantojams objekts

hash() metodi, ko izmanto viens nemainīgs objekts, ja mēs to izmantojam mainīgam objektam, piemēram, sarakstam, kopai, vārdnīcām, tā radīs kļūdu.

Python3




l>=> [>1>,>2>,>3>,>4>]> print>(>hash>(l))>

>

kaudze java
>

Izvade

TypeError: unhashable type: 'list'>

5. piemērs: hash() pielāgotā objektā

Šeit mēs ignorēsim __hash()__ metodes, lai izsauktu hash(), un __eq__() metode pārbaudīs divu pielāgoto objektu vienlīdzību.

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))>

>

>

Izvade

The hash is: 7627717261227283506 The hash is: 7627717261227283506>